N, M = map(int, input().split())
S = [int(i) for i in input().split()]+['g']
T = [int(i) for i in input().split()]+['a']

MOD = 10 ** 9 + 7

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

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) :
        
        if S[i-1] == T[j-1] :
            dp[i][j] = (dp[i-1][j] + dp[i][j-1]) % MOD
        else :
            dp[i][j] = (dp[i-1][j] + dp[i][j-1] - dp[i-1][j-1]) % MOD

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

MOD = 10 ** 9 + 7

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

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) :
        
        if S[i-1] == T[j-1] :
            dp[i][j] = (dp[i-1][j] + dp[i][j-1]) % MOD
        else :
            dp[i][j] = (dp[i-1][j] + dp[i][j-1] - dp[i-1][j-1]) % MOD

print(dp[N][M])