#include <stdio.h>
#include <string.h>

#define lli long long int

using namespace std;

lli n, m, s[2010], t[2010], memo[2010][2010], bigmod = 1000000007;

lli dp(lli a, lli b) {
	lli ret;
	if ((a == n) || (b == m))
		return 1;
	if (memo[a][b] != -1)
		return memo[a][b];
	ret = (dp(a + 1, b) + dp(a, b + 1)) % bigmod;
	if (s[a] != t[b])
		ret = (ret + bigmod -  dp(a + 1, b + 1)) % bigmod;
	memo[a][b] = ret;
	return ret;
}

int main() {
	lli ans;
	scanf("%lld %lld", &n, &m);
	for (lli i = 0; i < n; i++)
		scanf("%lld", &s[i]);
	for (lli i = 0; i < m; i++)
		scanf("%lld", &t[i]);
	memset(memo, -1, sizeof memo);
	ans = dp(0, 0);
	printf("%lld\n", ans);
	return 0;
}