#include <bits/stdc++.h>
using namespace std;
const long INF = 1000000000000000;
const long MOD = 1000000007;
bool check = false;
int main(void) {
  long N, M;
  cin >> N >> M;
  vector<long> 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<long>> dp(N + 1, vector<long>(M + 1, 1));
  for (int i = 1; i < N + 1; i++) {
    for (int j = 1; j < M + 1; j++) {
      dp.at(i).at(j) = dp.at(i).at(j - 1) + dp.at(i - 1).at(j) -
                       (S.at(i - 1) != T.at(j - 1)) * dp.at(i - 1).at(j - 1);
      dp.at(i).at(j) %= MOD;
    }
  }
  cout << dp.at(N).at(M) << endl;
}
