#include <bits/stdc++.h>
using namespace std;
int main() {
  int N, M;
  cin >> N >> M;
  vector<int> S(N);
  vector<int> T(M);
  vector<vector<long long int>> V(M + 1, vector<long long int>(N + 1));
  for (int i = 0; i < (N); i++) {
    scanf("%d", &S[i]);
  }
  for (int i = 0; i < (M); i++) {
    scanf("%d", &T[i]);
  }
  for (int i = 0; i < (M + 1); i++) {
    for (int j = 0; j < (N + 1); j++) {
      V[j][i] = 0;
    }
  }
  for (int j = (1); j < (N + 1); j++) {
    for (int i = (1); i < (M + 1); i++) {
      if (S[j - 1] == T[i - 1]) {
        V[j][i] = V[j - 1][i - 1] + V[j - 1][i] + V[j][i - 1] + 1;
      } else {
        V[j][i] = V[j - 1][i - 1] + V[j - 1][i] + V[j][i - 1];
      }
    }
  }
  cout << (V[M][N] + 1) % (1000000000 + 7) << endl;
}
