#common subsequence
n,m=map(int,input().split())
mod=10**9+7
a=list(map(int,input().split()))
b=list(map(int,input().split()))
dp=[[0 for i in range(m+1)] for j in range(n+1)]
#dp[i][j]=aのi番目、bのj番目まででの個数
#求めたいのはdp[n][m]
for i in range(m+1):
    dp[0][i]=1
for i in range(n+1):
    dp[i][0]=1
dp[0][0]=1
for i in range(1,n+1):
    for j in range(1,m+1):
        if a[i-1]==b[j-1]:
            dp[i][j]=(dp[i][j-1]+dp[i-1][j])%mod
        else:
            dp[i][j]=(dp[i][j-1]+dp[i-1][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 mod=10**9+7 mod 10**9+7 10**9 10 9 7 a=list(map(int,input().split())) a list(map(int,input().split())) list map(int,input().split()) map int input().split() ().split () input split b=list(map(int,input().split())) b list(map(int,input().split())) list map(int,input().split()) map int input().split() ().split () input split [0 for i in range(m+1)] for j in range(n+1) for j in range(n+1) j range(n+1) range n+1 n 1 for j in range(n+1) [0 for i in range(m+1)] dp=[[0 for i in range(m+1)] for j in range(n+1)] dp [[0 for i in range(m+1)] for j in range(n+1)] for i in range(m+1):
    dp[0][i]=1 i range(m+1) range m+1 m 1 dp[0][i]=1 dp[0][i] [0] dp 0 i 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 dp[0][0]=1 dp[0][0] [0] dp 0 0 1 for i in range(1,n+1):
    for j in range(1,m+1):
        if a[i-1]==b[j-1]:
            dp[i][j]=(dp[i][j-1]+dp[i-1][j])%mod
        else:
            dp[i][j]=(dp[i][j-1]+dp[i-1][j]-dp[i-1][j-1])%mod i range(1,n+1) range 1 n+1 n 1 for j in range(1,m+1):
        if a[i-1]==b[j-1]:
            dp[i][j]=(dp[i][j-1]+dp[i-1][j])%mod
        else:
            dp[i][j]=(dp[i][j-1]+dp[i-1][j]-dp[i-1][j-1])%mod j range(1,m+1) range 1 m+1 m 1 if a[i-1]==b[j-1]:
            dp[i][j]=(dp[i][j-1]+dp[i-1][j])%mod
        else:
            dp[i][j]=(dp[i][j-1]+dp[i-1][j]-dp[i-1][j-1])%mod a[i-1]==b[j-1] a[i-1] a i-1 i 1 b[j-1] b j-1 j 1 dp[i][j]=(dp[i][j-1]+dp[i-1][j])%mod dp[i][j] [i] dp i j (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][j]=(dp[i][j-1]+dp[i-1][j]-dp[i-1][j-1])%mod dp[i][j] [i] dp i j (dp[i][j-1]+dp[i-1][j]-dp[i-1][j-1])%mod dp[i][j-1]+dp[i-1][j]-dp[i-1][j-1] 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-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 a=list(map(int,input().split())) list(map(int,input().split())) a n,m=map(int,input().split()) map(int,input().split()) n m=map(int,input().split()) map(int,input().split()) m b=list(map(int,input().split())) list(map(int,input().split())) b dp=[[0 for i in range(m+1)] for j in range(n+1)] [[0 for i in range(m+1)] for j in range(n+1)] dp
#common subsequence
n,m=map(int,input().split())
mod=10**9+7
a=list(map(int,input().split()))
b=list(map(int,input().split()))
dp=[[0 for i in range(m+1)] for j in range(n+1)]
#dp[i][j]=aのi番目、bのj番目まででの個数
#求めたいのはdp[n][m]
for i in range(m+1):
    dp[0][i]=1
for i in range(n+1):
    dp[i][0]=1
dp[0][0]=1
for i in range(1,n+1):
    for j in range(1,m+1):
        if a[i-1]==b[j-1]:
            dp[i][j]=(dp[i][j-1]+dp[i-1][j])%mod
        else:
            dp[i][j]=(dp[i][j-1]+dp[i-1][j]-dp[i-1][j-1])%mod
print(dp[n][m])