MOD=10**9+7
INF=float('inf')
N,M=map(int,input().split())
S=list(map(int,input().split()))
T=list(map(int,input().split()))
dp=[[-INF]*(M+1) for i in range(N+1)]
dp[0][0]=1
for i in range(N+1):
    dp[i][0]=1
for j in range(M+1):
    dp[0][j]=1
for i in range(N):
    for j in range(M):
        if S[i]==T[j]:
            dp[i+1][j+1]=(dp[i][j+1]+dp[i+1][j])%MOD
        else:
            dp[i+1][j+1]=(dp[i][j+1]+dp[i+1][j]-dp[i][j]+MOD)%MOD
print(dp[N][M]) MOD=10**9+7 MOD 10**9+7 10**9 10 9 7 INF=float('inf') INF float('inf') float 'inf' 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 [-INF]*(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) [-INF]*(M+1) [-INF] -INF INF M+1 M 1 dp=[[-INF]*(M+1) for i in range(N+1)] dp [[-INF]*(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+1):
    dp[i][0]=1 i range(N+1) range N+1 N 1 dp[i][0]=1 dp[i][0] [i] dp i 0 1 for j in range(M+1):
    dp[0][j]=1 j range(M+1) range M+1 M 1 dp[0][j]=1 dp[0][j] [0] dp 0 j 1 for i in range(N):
    for j in range(M):
        if S[i]==T[j]:
            dp[i+1][j+1]=(dp[i][j+1]+dp[i+1][j])%MOD
        else:
            dp[i+1][j+1]=(dp[i][j+1]+dp[i+1][j]-dp[i][j]+MOD)%MOD i range(N) range N for j in range(M):
        if S[i]==T[j]:
            dp[i+1][j+1]=(dp[i][j+1]+dp[i+1][j])%MOD
        else:
            dp[i+1][j+1]=(dp[i][j+1]+dp[i+1][j]-dp[i][j]+MOD)%MOD j range(M) range M if S[i]==T[j]:
            dp[i+1][j+1]=(dp[i][j+1]+dp[i+1][j])%MOD
        else:
            dp[i+1][j+1]=(dp[i][j+1]+dp[i+1][j]-dp[i][j]+MOD)%MOD S[i]==T[j] S[i] S i T[j] T j dp[i+1][j+1]=(dp[i][j+1]+dp[i+1][j])%MOD dp[i+1][j+1] [i+1] dp i+1 i 1 j+1 j 1 (dp[i][j+1]+dp[i+1][j])%MOD dp[i][j+1]+dp[i+1][j] dp[i][j+1] [i] dp i j+1 j 1 dp[i+1][j] [i+1] dp i+1 i 1 j MOD dp[i+1][j+1]=(dp[i][j+1]+dp[i+1][j]-dp[i][j]+MOD)%MOD dp[i+1][j+1] [i+1] dp i+1 i 1 j+1 j 1 (dp[i][j+1]+dp[i+1][j]-dp[i][j]+MOD)%MOD dp[i][j+1]+dp[i+1][j]-dp[i][j]+MOD dp[i][j+1]+dp[i+1][j]-dp[i][j] dp[i][j+1]+dp[i+1][j] dp[i][j+1] [i] dp i j+1 j 1 dp[i+1][j] [i+1] dp i+1 i 1 j dp[i][j] [i] dp i j MOD MOD print(dp[N][M]) print dp[N][M] [N] dp N M INF=float('inf') float('inf') INF S=list(map(int,input().split())) list(map(int,input().split())) S T=list(map(int,input().split())) list(map(int,input().split())) T N,M=map(int,input().split()) map(int,input().split()) N MOD=10**9+7 10**9+7 MOD dp=[[-INF]*(M+1) for i in range(N+1)] [[-INF]*(M+1) for i in range(N+1)] dp M=map(int,input().split()) map(int,input().split()) M
MOD=10**9+7
INF=float('inf')
N,M=map(int,input().split())
S=list(map(int,input().split()))
T=list(map(int,input().split()))
dp=[[-INF]*(M+1) for i in range(N+1)]
dp[0][0]=1
for i in range(N+1):
    dp[i][0]=1
for j in range(M+1):
    dp[0][j]=1
for i in range(N):
    for j in range(M):
        if S[i]==T[j]:
            dp[i+1][j+1]=(dp[i][j+1]+dp[i+1][j])%MOD
        else:
            dp[i+1][j+1]=(dp[i][j+1]+dp[i+1][j]-dp[i][j]+MOD)%MOD
print(dp[N][M])