#include <bits/stdc++.h>
using namespace std;
int main(void) {
  int N, M;
  cin >> N >> M;
  vector<int> S(N), T(M);
  for (int i = 0; i < N; i++) {
    cin >> S.at(i);
  }
  for (int i = 0; i < M; i++) {
    cin >> T.at(i);
  }
  vector<vector<int>> dp(N + 1, vector<int>(M + 1, 1));
  long long int P = 1000 * 1000 * 1000 + 7;
  for (int i = 1; i <= N; i++) {
    long long int sum = 0;
    for (int j = 1; j <= M; j++) {
      if (S.at(i - 1) == T.at(j - 1)) {
        dp.at(i).at(j) = dp.at(i - 1).at(j - 1) + dp.at(i - 1).at(j) + sum;
        sum += dp.at(i - 1).at(j - 1);
        dp.at(i).at(j) = dp.at(i).at(j) % P;
        sum = sum % P;
      } else {
        dp.at(i).at(j) = dp.at(i - 1).at(j) + sum;
        dp.at(i).at(j) = dp.at(i).at(j) % P;
      }
    }
  }
  dp.at(N).at(M) = dp.at(N).at(M) % P;
  cout << dp.at(N).at(M);
}
