#include <bits/stdc++.h>
using namespace std;
const long long MOD = 1000000007;
long long gcd(long long a, long long b) {
  if (a < b) swap(a, b);
  if (a % b == 0)
    return b;
  else
    return gcd(b, a % b);
}
long long lcm(long long a, long long b) {
  long long g = gcd(a, b);
  return a * b / g;
}
long long N, M, S[3000], T[3000];
int main() {
  cin >> N >> M;
  for (int i = 0; i < N; i++) {
    cin >> S[i];
  }
  for (int i = 0; i < M; i++) {
    cin >> T[i];
  }
  long long ANS = 1;
  for (int i = 0; i < N; i++) {
    long long AL[3000] = {0};
    if (S[i] == T[0]) AL[0] = 1;
    for (int j = 1; j < M; j++) {
      AL[j] = AL[j - 1];
      if (S[i] == T[j]) AL[j]++;
    }
    for (int j = i + 1; j < N; j++) {
      for (int k = M - 1; k >= 0; k--) {
        if (S[j] == T[k]) {
          for (int l = M - 1; l >= k; l--) {
            AL[l] += AL[k];
            AL[l] %= MOD;
          }
        }
      }
    }
    ANS += AL[M - 1];
    ANS %= MOD;
  }
  cout << ANS;
}
