#include <bits/stdc++.h>
using namespace std;
long long int s1[3005], s2[3005];
int n, m;
long long int dp[3005][3005];
const long long int mod = 1e9 + 7;
long long int lcs(int i, int j) {
  if (i >= n) {
    return 0;
  }
  if (j >= m) {
    return 0;
  }
  if (dp[i][j] != -1) {
    return dp[i][j];
  }
  long long int ans = 0;
  if (s1[i] == s2[j]) {
    ans = 1 + lcs(i + 1, j) + lcs(i, j + 1);
    ans %= mod;
  } else {
    ans = lcs(i + 1, j) + lcs(i, j + 1) - lcs(i + 1, j + 1);
    ans %= mod;
  }
  return (dp[i][j] = ans);
}
int main() {
  for (int i = 0; i <= 3000; i++) {
    for (int j = 0; j <= 3000; j++) {
      dp[i][j] = -1;
    }
  }
  cin >> n >> m;
  for (int i = 0; i < n; i++) {
    cin >> s1[i];
  }
  for (int i = 0; i < m; i++) {
    cin >> s2[i];
  }
  cout << (lcs(0, 0) + 1) % mod << '\n';
}
