MOD = 10**9 + 7
N,M= map(int,input().split())
S= list(map(int,input().split()))
T= list(map(int,input().split()))

def dpinit(ps, val=0):
    res = [val for i in [0]*ps[-1]]
    for i in ps[:-1][::-1]:
        res = [res[:] for k in [0]*i]
    return res

dp = dpinit((N+1,M+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(1,N+1):
    s = S[i-1]
    for j in range(1,M+1):
        t = T[j-1]
        dp[i][j] += dp[i-1][j] + dp[i][j-1]
        if s != t:
            dp[i][j] -= dp[i-1][j-1]
        dp[i][j] %= MOD

print(dp[N][M])

 MOD = 10**9 + 7 MOD 10**9 + 7 10**9 10 9 7 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 def dpinit(ps, val=0):
    res = [val for i in [0]*ps[-1]]
    for i in ps[:-1][::-1]:
        res = [res[:] for k in [0]*i]
    return res dpinit val for i in [0]*ps[-1] for i in [0]*ps[-1] i [0]*ps[-1] [0] 0 ps[-1] ps -1 for i in [0]*ps[-1] val res = [val for i in [0]*ps[-1]] res [val for i in [0]*ps[-1]] for i in ps[:-1][::-1]:
        res = [res[:] for k in [0]*i]
     i ps[:-1][::-1] [:-1] ps :-1 -1 ::-1 -1 res[:] for k in [0]*i for k in [0]*i k [0]*i [0] 0 i for k in [0]*i res[:] res : res = [res[:] for k in [0]*i] res [res[:] for k in [0]*i] return res res ps ps val=0 val 0 dp = dpinit((N+1,M+1)) dp dpinit((N+1,M+1)) dpinit (N+1,M+1) N+1 N 1 M+1 M 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(1,N+1):
    s = S[i-1]
    for j in range(1,M+1):
        t = T[j-1]
        dp[i][j] += dp[i-1][j] + dp[i][j-1]
        if s != t:
            dp[i][j] -= dp[i-1][j-1]
        dp[i][j] %= MOD i range(1,N+1) range 1 N+1 N 1 s = S[i-1] s S[i-1] S i-1 i 1 for j in range(1,M+1):
        t = T[j-1]
        dp[i][j] += dp[i-1][j] + dp[i][j-1]
        if s != t:
            dp[i][j] -= dp[i-1][j-1]
        dp[i][j] %= MOD j range(1,M+1) range 1 M+1 M 1 t = T[j-1] t T[j-1] T j-1 j 1 dp[i][j] += dp[i-1][j] + dp[i][j-1] dp[i][j] [i] 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 if s != t:
            dp[i][j] -= dp[i-1][j-1]
         s != t s t dp[i][j] -= dp[i-1][j-1] dp[i][j] [i] dp i j dp[i-1][j-1] [i-1] dp i-1 i 1 j-1 j 1 dp[i][j] %= MOD dp[i][j] [i] dp i j MOD print(dp[N][M]) print dp[N][M] [N] dp N M dp = dpinit((N+1,M+1)) dpinit((N+1,M+1)) dp t = T[j-1] T[j-1] t MOD = 10**9 + 7 10**9 + 7 MOD S= list(map(int,input().split())) list(map(int,input().split())) S s = S[i-1] S[i-1] s M= map(int,input().split()) map(int,input().split()) M N,M= map(int,input().split()) map(int,input().split()) N T= list(map(int,input().split())) list(map(int,input().split())) T def dpinit(ps, val=0):
    res = [val for i in [0]*ps[-1]]
    for i in ps[:-1][::-1]:
        res = [res[:] for k in [0]*i]
    return res def dpinit(ps, val=0):
    res = [val for i in [0]*ps[-1]]
    for i in ps[:-1][::-1]:
        res = [res[:] for k in [0]*i]
    return res dpinit
MOD = 10**9 + 7
N,M= map(int,input().split())
S= list(map(int,input().split()))
T= list(map(int,input().split()))

def dpinit(ps, val=0):
    res = [val for i in [0]*ps[-1]]
    for i in ps[:-1][::-1]:
        res = [res[:] for k in [0]*i]
    return res

dp = dpinit((N+1,M+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(1,N+1):
    s = S[i-1]
    for j in range(1,M+1):
        t = T[j-1]
        dp[i][j] += dp[i-1][j] + dp[i][j-1]
        if s != t:
            dp[i][j] -= dp[i-1][j-1]
        dp[i][j] %= MOD

print(dp[N][M])


