#include <bits/stdc++.h>

using namespace std;

long long memo[2005][2005];

int S[100005];
int T[100005];

long long MOD = 1e9+7;

long long dp(int i, int j){
	if(i == 0 || j == 0){
		return 1;
	}else if(memo[i][j] != -1){
		return memo[i][j];
	}else{
		long long temp = dp(i-1, j) + dp(i, j-1);
		if(S[i-1] != T[j-1]){
			temp += MOD-dp(i-1, j-1);
		}
		return memo[i][j] = temp%MOD;
	}
}

int main(){
	int N, M;
	scanf("%d%d", &N, &M);
	
	for(int i = 0; i < N; i ++){
		scanf("%d", &S[i]);
	}
	
	for(int i = 0; i < M; i ++){
		scanf("%d", &T[i]);
	}
	
	memset(memo, -1, sizeof(memo));
	printf("%lld", dp(N, M));
	return 0;
}
