#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> ii;
const int INF = 1e9;
const ll LINF = 1e18;
const int MOD = 1e9 + 7;
const int N = 2e3 + 5;
void add(int& a, int b) {
a = (0LL + a + b) % MOD;
if (a < 0) a += MOD;
}
int n, m;
int s[N], t[N];
int dp[N][N]; // dp[i][j] = Số xâu con chung khác rỗng của s[1..i] và t[1..j]
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n >> m;
for (int i = 1; i <= n; i++) cin >> s[i];
for (int i = 1; i <= m; i++) cin >> t[i];
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
if (s[i] == t[j]) add(dp[i][j], 1 + dp[i - 1][j - 1]);
add(dp[i][j], dp[i - 1][j] + dp[i][j - 1] - dp[i - 1][j - 1]);
}
}
int ans = dp[n][m];
add(ans, 1);
cout << ans << '\n';
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IAoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsgIAoKdHlwZWRlZiBsb25nIGxvbmcgbGw7ICAKdHlwZWRlZiBwYWlyPGludCwgaW50PiBpaTsgIAoKY29uc3QgaW50IElORiA9IDFlOTsgIApjb25zdCBsbCBMSU5GID0gMWUxODsgIAoKY29uc3QgaW50IE1PRCA9IDFlOSArIDc7IApjb25zdCBpbnQgTiA9IDJlMyArIDU7IAoKdm9pZCBhZGQoaW50JiBhLCBpbnQgYikgewoJYSA9ICgwTEwgKyBhICsgYikgJSBNT0Q7IAoJaWYgKGEgPCAwKSBhICs9IE1PRDsgCn0KCmludCBuLCBtOyAKaW50IHNbTl0sIHRbTl07CgppbnQgZHBbTl1bTl07IC8vIGRwW2ldW2pdID0gU+G7kSB4w6J1IGNvbiBjaHVuZyBraMOhYyBy4buXbmcgY+G7p2Egc1sxLi5pXSB2w6AgdFsxLi5qXQoKaW50IG1haW4oKSB7Cglpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IAoJY2luLnRpZShudWxscHRyKTsgCQoJY2luID4+IG4gPj4gbTsgCglmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIGNpbiA+PiBzW2ldOyAKCWZvciAoaW50IGkgPSAxOyBpIDw9IG07IGkrKykgY2luID4+IHRbaV07IAoKCWZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewoJCWZvciAoaW50IGogPSAxOyBqIDw9IG07IGorKykgewoJCQlpZiAoc1tpXSA9PSB0W2pdKSBhZGQoZHBbaV1bal0sIDEgKyBkcFtpIC0gMV1baiAtIDFdKTsgCgkJCWFkZChkcFtpXVtqXSwgZHBbaSAtIDFdW2pdICsgZHBbaV1baiAtIDFdIC0gZHBbaSAtIDFdW2ogLSAxXSk7IAoJCX0KCX0KCglpbnQgYW5zID0gZHBbbl1bbV07IAoJYWRkKGFucywgMSk7IAoKCWNvdXQgPDwgYW5zIDw8ICdcbic7IAp9