#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> P;
typedef vector<int> VI;
 
template<class T> bool chmax(T &a, const T &b) { if (a<b) { a=b; return 1; } return 0; }
template<class T> bool chmin(T &a, const T &b) { if (a>b) { a=b; return 1; } return 0; }
#define _overload3(_1,_2,_3,name,...) name
#define _rep(i,n) repi(i,0,n)
#define repi(i,a,b) for(int i=int(a);i<int(b);++i)
#define rep(...) _overload3(__VA_ARGS__,repi,_rep,)(__VA_ARGS__)
#define all(x) (x).begin(),(x).end()
const int mod=1e9+7;

int main(){
    int n,m;cin>>n>>m;
    ll dp[n][m]={};
    int s[n],t[m];
    rep(i,n) cin>>s[i];
    rep(i,m) cin>>t[i];
    rep(i,m){
        if(s[0]==t[i])dp[0][i]=1;
    }
    rep(i,n-1){
        if(s[i+1]==t[0])dp[i+1][0]=1;
        rep(j,m-1){
            if(s[i+1]==t[j+1])dp[i+1][j+1]=1+dp[i][j];
        }
    }
    ll ans=1;
    rep(i,n) rep(j,m){
        ans+=dp[i][j];ans%=mod;
    }
    cout<<ans<<endl;
}