#include <bits/stdc++.h>
using namespace std;
const long long MOD = 1000000007LL;
long long GCD(long long a, long long b) { return b == 0 ? a : GCD(b, a % b); }
int n, m, s[2001], t[2001];
long long memo[2001][2001];
long long helper(int pa, int pb) {
  if (pa == n || pb == m) return 0;
  if (memo[pa][pb] != 0) return memo[pa][pb];
  long long tot = ((helper(pa + 1, pb) + helper(pa, pb + 1)) % MOD -
                   helper(pa + 1, pb + 1) % MOD + MOD) %
                  MOD;
  if (s[pa] == t[pb]) tot += 1 + helper(pa + 1, pb + 1) % MOD;
  return memo[pa][pb] = tot % MOD;
}
int main() {
  cin.sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> m;
  for (int i = 0; i < n; ++i) cin >> s[i];
  for (int i = 0; i < m; ++i) cin >> t[i];
  cout << (helper(0, 0) + 1) % MOD;
  return 0;
}
