#include <bits/stdc++.h>
using namespace std;
const long long MOD = 1000000007;
long long dp[2100][2100];
int main() {
  int N, M;
  cin >> N >> M;
  vector<int> S(N + 3), T(M + 3);
  for (int i = 0; i < (N); ++i) cin >> S[i];
  for (int i = 0; i < (M); ++i) cin >> T[i];
  for (int si = 0; si < (N + 1); ++si)
    for (int ti = 0; ti < (M + 1); ++ti) dp[si][ti] = 0;
  dp[0][0] = 1;
  for (int si = 0; si < (N + 1); ++si) {
    for (int ti = 0; ti < (M + 1); ++ti) {
      if (ti - 1 >= 0 && si - 1 >= 0) {
        if (S[si - 1] == T[ti - 1])
          dp[si][ti] = (dp[si][ti] + dp[si - 1][ti - 1]) % MOD;
      }
      if (si - 1 >= 0) dp[si][ti] = (dp[si][ti] + dp[si - 1][ti]) % MOD;
      if (ti - 1 >= 0) dp[si][ti] = (dp[si][ti] + dp[si][ti - 1]) % MOD;
      if (ti - 1 >= 0 && si - 1 >= 0) {
        dp[si][ti] = (dp[si][ti] - dp[si - 1][ti - 1]);
        if (dp[si][ti] - dp[si - 1][ti - 1] < 0) {
          dp[si][ti] += MOD;
        }
      }
    }
  }
  cout << dp[N][M] << endl;
}
