#include <bits/stdc++.h>
using namespace std;
#define int long long
#define rep(i,n) for(int i=0;i<(n);i++)
#define repf(i,j,n) for(int i=(j);i<(n);i++)

int mod=1e9+7;

void amax(int& a,int b){if(a<b)a=b;} 

signed main(){
	int n,m;cin>n>>m;
	vector<int> s(n),t(m);
	for(auto&& u:s)cin>>u;
	for(auto&& u:t)cin>>u;
	vector<vector<int>>dp(n+1,vector<int>(m+1,0));
	rep(i,n+1)rep(j,m+1){
		if(s[i]==t[j])amax(dp[i+1][j+1],dp[i][j]+1);
		else amax(dp[i+1][j+1],max(dp[i+1][j],dp[i][j+1]));
		dp[i+1][j+1]%=mod;
	}
	cout<<dp[n][m]<<endl;
}