N, M = map(int, input().split())
S = list(map(int, input().split()))
T = list(map(int, input().split()))

mod = 10 ** 9 + 7

dp = [[0 for i in range(M+1)] for i in range(N+1)]

for i in range(1, N+1):
    for j in range(1, M+1):
        if S[i-1] == T[j-1]:
            dp[i][j] = (1 + dp[i-1][j] + dp[i][j-1]) % mod
        else:
            dp[i][j] = (dp[i-1][j] + dp[i][j-1] - dp[i-1][j-1]) % mod

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

for i in range(1, N+1):
    for j in range(1, M+1):
        if S[i-1] == T[j-1]:
            dp[i][j] = (1 + dp[i-1][j] + dp[i][j-1]) % mod
        else:
            dp[i][j] = (dp[i-1][j] + dp[i][j-1] - dp[i-1][j-1]) % mod

print((dp[-1][-1] + 1) % mod)
