N, M = map(int, input().split())
s_list = list(map(int, input().split()))
t_list = list(map(int, input().split()))

mod = 10 ** 9 + 7


def solve(x, y):
    dp = [[0 for _ in range(M + 1)] for _ in range(N + 1)]
    for i in range(1, N + 1):
        for j in range(1, M + 1):
            if x[i - 1] == y[j - 1]:
                dp[i][j] += dp[i - 1][j - 1] + 1
                dp[i][j] %= mod
            dp[i][j] += dp[i - 1][j] + dp[i][j - 1] - dp[i - 1][j - 1]
            dp[i][j] %= mod

    return dp


ans = solve(s_list, t_list)
print((ans[N][M] + 1) % mod) N, M = map(int, input().split()) N map(int, input().split()) map int input().split() ().split () input split M s_list = list(map(int, input().split())) s_list list(map(int, input().split())) list map(int, input().split()) map int input().split() ().split () input split t_list = list(map(int, input().split())) t_list 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 def solve(x, y):
    dp = [[0 for _ in range(M + 1)] for _ in range(N + 1)]
    for i in range(1, N + 1):
        for j in range(1, M + 1):
            if x[i - 1] == y[j - 1]:
                dp[i][j] += dp[i - 1][j - 1] + 1
                dp[i][j] %= mod
            dp[i][j] += dp[i - 1][j] + dp[i][j - 1] - dp[i - 1][j - 1]
            dp[i][j] %= mod

    return dp solve [0 for _ in range(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 for _ in range(M + 1)] dp = [[0 for _ in range(M + 1)] for _ in range(N + 1)] dp [[0 for _ in range(M + 1)] for _ in range(N + 1)] for i in range(1, N + 1):
        for j in range(1, M + 1):
            if x[i - 1] == y[j - 1]:
                dp[i][j] += dp[i - 1][j - 1] + 1
                dp[i][j] %= mod
            dp[i][j] += dp[i - 1][j] + dp[i][j - 1] - dp[i - 1][j - 1]
            dp[i][j] %= mod

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

     j range(1, M + 1) range 1 M + 1 M 1 if x[i - 1] == y[j - 1]:
                dp[i][j] += dp[i - 1][j - 1] + 1
                dp[i][j] %= mod
             x[i - 1] == y[j - 1] x[i - 1] x i - 1 i 1 y[j - 1] y j - 1 j 1 dp[i][j] += dp[i - 1][j - 1] + 1 dp[i][j] [i] dp i j dp[i - 1][j - 1] + 1 dp[i - 1][j - 1] [i - 1] dp i - 1 i 1 j - 1 j 1 1 dp[i][j] %= mod dp[i][j] [i] dp i j mod dp[i][j] += dp[i - 1][j] + dp[i][j - 1] - dp[i - 1][j - 1] dp[i][j] [i] dp i j 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 dp[i][j] %= mod dp[i][j] [i] dp i j mod return dp dp x x y y ans = solve(s_list, t_list) ans solve(s_list, t_list) solve s_list t_list print((ans[N][M] + 1) % mod) print (ans[N][M] + 1) % mod ans[N][M] + 1 ans[N][M] [N] ans N M 1 mod mod = 10 ** 9 + 7 10 ** 9 + 7 mod s_list = list(map(int, input().split())) list(map(int, input().split())) s_list def solve(x, y):
    dp = [[0 for _ in range(M + 1)] for _ in range(N + 1)]
    for i in range(1, N + 1):
        for j in range(1, M + 1):
            if x[i - 1] == y[j - 1]:
                dp[i][j] += dp[i - 1][j - 1] + 1
                dp[i][j] %= mod
            dp[i][j] += dp[i - 1][j] + dp[i][j - 1] - dp[i - 1][j - 1]
            dp[i][j] %= mod

    return dp def solve(x, y):
    dp = [[0 for _ in range(M + 1)] for _ in range(N + 1)]
    for i in range(1, N + 1):
        for j in range(1, M + 1):
            if x[i - 1] == y[j - 1]:
                dp[i][j] += dp[i - 1][j - 1] + 1
                dp[i][j] %= mod
            dp[i][j] += dp[i - 1][j] + dp[i][j - 1] - dp[i - 1][j - 1]
            dp[i][j] %= mod

    return dp solve M = map(int, input().split()) map(int, input().split()) M t_list = list(map(int, input().split())) list(map(int, input().split())) t_list N, M = map(int, input().split()) map(int, input().split()) N ans = solve(s_list, t_list) solve(s_list, t_list) ans
N, M = map(int, input().split())
s_list = list(map(int, input().split()))
t_list = list(map(int, input().split()))

mod = 10 ** 9 + 7


def solve(x, y):
    dp = [[0 for _ in range(M + 1)] for _ in range(N + 1)]
    for i in range(1, N + 1):
        for j in range(1, M + 1):
            if x[i - 1] == y[j - 1]:
                dp[i][j] += dp[i - 1][j - 1] + 1
                dp[i][j] %= mod
            dp[i][j] += dp[i - 1][j] + dp[i][j - 1] - dp[i - 1][j - 1]
            dp[i][j] %= mod

    return dp


ans = solve(s_list, t_list)
print((ans[N][M] + 1) % mod)
