#include <bits/stdc++.h>
using namespace std;
const int MAXN = 2333;
const int MOD = 1000000007;
int a[MAXN], b[MAXN];
int dp[MAXN][MAXN];
int main()
{
	int n, m;
	cin >> n >> m;
	for (int i = 1; i <= n; i++)cin >> a[i];
	for (int i = 1; i <= m; i++)cin >> b[i];
	for (int i = 1; i <= n; i++)
		for  (int j = 1; j <= m; j++)
		{
            dp[i][j] = (dp[i-1][j] + dp[i][j-1]) - dp[i-1][j-1];
            if(a[i] == b[j]) dp[i][j] += dp[i-1][j-1] + 1;
            if (dp[i][j] < 0)dp[i][j] += MOD;
            if (dp[i][j] >= MOD)dp[i][j] %= MOD;
        }
	cout << (dp[n][m] + 1) % MOD << endl;
	return 0;
}
