#include <bits/stdc++.h>
using namespace std;
long long int dp[2009][2009];
long long int s[2009], t[2009];
long long int fun(long long int i, long long int j) {
  if (i < 0 or j < 0) return 0;
  if (i == 0 or j == 0)
    return 1;
  else if (dp[i][j] != -1)
    return dp[i][j];
  else {
    if (s[i - 1] != t[j - 1])
      return dp[i][j] = (fun(i - 1, j) + fun(i, j - 1) - fun(i - 1, j - 1) +
                         1000000007) %
                        1000000007;
    else
      return dp[i][j] = (fun(i - 1, j) + fun(i, j - 1)) % 1000000007;
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  ;
  long long int n, m, x;
  cin >> n >> m;
  for (long long int i = 0; i < n; i++) cin >> s[i];
  for (long long int i = 0; i < m; i++) cin >> t[i];
  memset(dp, -1, sizeof(dp));
  cout << fun(n, m) << endl;
}
