N,M=map(int,input().split())
S=list(map(int,input().split()))
T=list(map(int,input().split()))
MOD=10**9+7
dp=[[0]*(M+1) for i in range(N+1)]
dp[0][0]=1
for i in range(N):
    dp[i+1][0]=1
for j in range(M):
    dp[0][j+1]=1
for i in range(N):
    for j in range(M):
        if S[i]==T[j]:
            dp[i+1][j+1]+=dp[i][j]
        dp[i+1][j+1]+=dp[i+1][j]+dp[i][j+1]-dp[i][j]
        dp[i+1][j+1]%=MOD
print(dp[N][M]) N,M=map(int,input().split()) N map(int,input().split()) map int input().split() ().split () input split M S=list(map(int,input().split())) S list(map(int,input().split())) list map(int,input().split()) map int input().split() ().split () input split T=list(map(int,input().split())) T list(map(int,input().split())) list map(int,input().split()) map int input().split() ().split () input split MOD=10**9+7 MOD 10**9+7 10**9 10 9 7 [0]*(M+1) for i in range(N+1) for i in range(N+1) i range(N+1) range N+1 N 1 for i in range(N+1) [0]*(M+1) [0] 0 M+1 M 1 dp=[[0]*(M+1) for i in range(N+1)] dp [[0]*(M+1) for i in range(N+1)] dp[0][0]=1 dp[0][0] [0] dp 0 0 1 for i in range(N):
    dp[i+1][0]=1 i range(N) range N dp[i+1][0]=1 dp[i+1][0] [i+1] dp i+1 i 1 0 1 for j in range(M):
    dp[0][j+1]=1 j range(M) range M dp[0][j+1]=1 dp[0][j+1] [0] dp 0 j+1 j 1 1 for i in range(N):
    for j in range(M):
        if S[i]==T[j]:
            dp[i+1][j+1]+=dp[i][j]
        dp[i+1][j+1]+=dp[i+1][j]+dp[i][j+1]-dp[i][j]
        dp[i+1][j+1]%=MOD i range(N) range N for j in range(M):
        if S[i]==T[j]:
            dp[i+1][j+1]+=dp[i][j]
        dp[i+1][j+1]+=dp[i+1][j]+dp[i][j+1]-dp[i][j]
        dp[i+1][j+1]%=MOD j range(M) range M if S[i]==T[j]:
            dp[i+1][j+1]+=dp[i][j]
         S[i]==T[j] S[i] S i T[j] T j dp[i+1][j+1]+=dp[i][j] dp[i+1][j+1] [i+1] dp i+1 i 1 j+1 j 1 dp[i][j] [i] dp i j dp[i+1][j+1]+=dp[i+1][j]+dp[i][j+1]-dp[i][j] dp[i+1][j+1] [i+1] dp i+1 i 1 j+1 j 1 dp[i+1][j]+dp[i][j+1]-dp[i][j] dp[i+1][j]+dp[i][j+1] dp[i+1][j] [i+1] dp i+1 i 1 j dp[i][j+1] [i] dp i j+1 j 1 dp[i][j] [i] dp i j dp[i+1][j+1]%=MOD dp[i+1][j+1] [i+1] dp i+1 i 1 j+1 j 1 MOD print(dp[N][M]) print dp[N][M] [N] dp N M MOD=10**9+7 10**9+7 MOD dp=[[0]*(M+1) for i in range(N+1)] [[0]*(M+1) for i in range(N+1)] dp N,M=map(int,input().split()) map(int,input().split()) N T=list(map(int,input().split())) list(map(int,input().split())) T M=map(int,input().split()) map(int,input().split()) M S=list(map(int,input().split())) list(map(int,input().split())) S
N,M=map(int,input().split())
S=list(map(int,input().split()))
T=list(map(int,input().split()))
MOD=10**9+7
dp=[[0]*(M+1) for i in range(N+1)]
dp[0][0]=1
for i in range(N):
    dp[i+1][0]=1
for j in range(M):
    dp[0][j+1]=1
for i in range(N):
    for j in range(M):
        if S[i]==T[j]:
            dp[i+1][j+1]+=dp[i][j]
        dp[i+1][j+1]+=dp[i+1][j]+dp[i][j+1]-dp[i][j]
        dp[i+1][j+1]%=MOD
print(dp[N][M])
