using namespace std;
typedef long long int ll; 

int main(void){
    int N, M;
    cin >> N >>M;
    
    vector<int> S(N), T(M);
    for (int i = 0; i < N; i++) {
    			cin >> S.at(i);
  	}
  	
    for (int i = 0; i < M; i++) {
    			cin >> T.at(i);
  	}
  	
  	
  	vector<vector<ll>> dp(N+1, vector<ll>(M+1,1)); 
  	ll P = 1000*1000*1000+7; 
  	
  	for(int i=1; i<=N; i++){
  	    ll sum=0; 
  	    for(int j=1; j<=M; j++){

  	        if(S.at(i-1)==T.at(j-1)){
  	            dp.at(i).at(j) = dp.at(i-1).at(j-1) + dp.at(i-1).at(j) + sum; 
  	            sum+= dp.at(i-1).at(j-1); 
  	            dp.at(i).at(j) = dp.at(i).at(j)%P;
  	            sum = sum%P; 
  	        }else{
  	            dp.at(i).at(j) = dp.at(i-1).at(j) + sum; 
  	            dp.at(i).at(j) = dp.at(i).at(j)%P;
  	        }
  	        //cout<< dp.at(i).at(j)<<" "; 
  	    }
  	    //cout<< endl; 
  	}
  	dp.at(N).at(M)=dp.at(N).at(M)%P; 
  	
  	cout<< dp.at(N).at(M);   	  	
    
}