n, m = map(int, input().split())
s = list(map(int, input().split()))
t = list(map(int, input().split()))
dp = [[0] * (m+2) for _ in range(n+2)]
mod = 1000000007

for i in range(n+1):
    dp[i][0] = 1
for i in range(m+1):
    dp[0][i] = 1

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

for i in range(n+1):
    dp[i][0] = 1
for i in range(m+1):
    dp[0][i] = 1

for i in range(1, n+1):
    for j in range(1, m+1):
        dp[i][j] = (dp[i-1][j] + dp[i][j-1] - dp[i-1][j-1]) % mod
        if s[i-1] == t[j-1]:
            dp[i][j] += dp[i-1][j-1]
            dp[i][j] %= mod
print(dp[n][m])
