MOD = 10**9 + 7
n, m = map(int, input().split())
s = list(map(int, input().split()))
t = list(map(int, input().split()))

dp = [[0] * (m+1) for _ in range(n+1)]
cs = [[0] * (m+1) for _ 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 + cs[i-1][j-1]
            dp[i][j] %= MOD

        cs[i][j] = cs[i-1][j] + cs[i][j-1] - cs[i-1][j-1] + dp[i][j]
        cs[i][j] %= MOD

print((cs[n][m] + 1) % MOD) 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 [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)] [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 cs = [[0] * (m+1) for _ in range(n+1)] cs [[0] * (m+1) for _ 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 + cs[i-1][j-1]
            dp[i][j] %= MOD

        cs[i][j] = cs[i-1][j] + cs[i][j-1] - cs[i-1][j-1] + dp[i][j]
        cs[i][j] %= 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 + cs[i-1][j-1]
            dp[i][j] %= MOD

        cs[i][j] = cs[i-1][j] + cs[i][j-1] - cs[i-1][j-1] + dp[i][j]
        cs[i][j] %= MOD j range(1, m+1) range 1 m+1 m 1 if s[i-1] == t[j-1]:
            dp[i][j] = 1 + cs[i-1][j-1]
            dp[i][j] %= 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 + cs[i-1][j-1] dp[i][j] [i] dp i j 1 + cs[i-1][j-1] 1 cs[i-1][j-1] [i-1] cs i-1 i 1 j-1 j 1 dp[i][j] %= MOD dp[i][j] [i] dp i j MOD cs[i][j] = cs[i-1][j] + cs[i][j-1] - cs[i-1][j-1] + dp[i][j] cs[i][j] [i] cs i j cs[i-1][j] + cs[i][j-1] - cs[i-1][j-1] + dp[i][j] cs[i-1][j] + cs[i][j-1] - cs[i-1][j-1] cs[i-1][j] + cs[i][j-1] cs[i-1][j] [i-1] cs i-1 i 1 j cs[i][j-1] [i] cs i j-1 j 1 cs[i-1][j-1] [i-1] cs i-1 i 1 j-1 j 1 dp[i][j] [i] dp i j cs[i][j] %= MOD cs[i][j] [i] cs i j MOD print((cs[n][m] + 1) % MOD) print (cs[n][m] + 1) % MOD cs[n][m] + 1 cs[n][m] [n] cs n m 1 MOD s = list(map(int, input().split())) list(map(int, input().split())) s n, m = map(int, input().split()) map(int, input().split()) n MOD = 10**9 + 7 10**9 + 7 MOD 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 = list(map(int, input().split())) list(map(int, input().split())) t cs = [[0] * (m+1) for _ in range(n+1)] [[0] * (m+1) for _ in range(n+1)] cs
MOD = 10**9 + 7
n, m = map(int, input().split())
s = list(map(int, input().split()))
t = list(map(int, input().split()))

dp = [[0] * (m+1) for _ in range(n+1)]
cs = [[0] * (m+1) for _ 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 + cs[i-1][j-1]
            dp[i][j] %= MOD

        cs[i][j] = cs[i-1][j] + cs[i][j-1] - cs[i-1][j-1] + dp[i][j]
        cs[i][j] %= MOD

print((cs[n][m] + 1) % MOD)
