mod = 10 ** 9 + 7

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

dp = [[0] * (M + 2) for _ in range(N + 2)]
for i in range(N+1):
    dp[i][0] = 1
for j in range(M+1):
    dp[0][j] = 1

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

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

dp = [[0] * (M + 2) for _ in range(N + 2)]
for i in range(N+1):
    dp[i][0] = 1
for j in range(M+1):
    dp[0][j] = 1

for i, s in enumerate(S, 1):
    for j, t in enumerate(T, 1):
        dp[i][j] += dp[i - 1][j]
        dp[i][j] += dp[i][j - 1]
        if s == t:
            dp[i][j] += dp[i - 1][j - 1]
        dp[i][j] -= dp[i - 1][j - 1]
        dp[i][j] += mod
        dp[i][j] %= mod

print(dp[N][M])