MOD = 10**9+7
N, M = map(int, input().split())
S = [int(x) for x in input().split()]
T = [int(x) for x in input().split()]

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

dp = [[0] * (M + 1) for _ 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, s in enumerate(S):
    for j, t in enumerate(T):
        if s == t:
            dp[i+1][j+1] = (dp[i+1][j] + dp[i][j+1]) % MOD
        else:
            dp[i+1][j+1] = (dp[i+1][j] + dp[i][j+1] - dp[i][j] + MOD) % MOD
print(dp[-1][-1])
