n, m = map(int, input().split())
s = list(map(int, input().split()))
t = list(map(int, input().split()))

dp1 = [[0] * (m + 1) for _ in range(n + 1)] # ends with (i, j)
dp2 = [[0] * (m + 1) for _ in range(n + 1)] # cumsum

dp1[0][0] = 1
for i in range(n + 1):
    dp2[i][0] = 1
for j in range(m + 1):
    dp2[0][j] = 1

for i in range(n):
    for j in range(m):
        if s[i] == t[j]:
            dp1[i+1][j+1] = dp2[i][j]
        else:
            dp1[i+1][j+1] = 0
        dp2[i+1][j+1] = (dp1[i+1][j+1] + dp2[i][j+1] + dp2[i+1][j] - dp2[i][j]) % (10 ** 9 + 7)


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

dp1 = [[0] * (m + 1) for _ in range(n + 1)] # ends with (i, j)
dp2 = [[0] * (m + 1) for _ in range(n + 1)] # cumsum

dp1[0][0] = 1
for i in range(n + 1):
    dp2[i][0] = 1
for j in range(m + 1):
    dp2[0][j] = 1

for i in range(n):
    for j in range(m):
        if s[i] == t[j]:
            dp1[i+1][j+1] = dp2[i][j]
        else:
            dp1[i+1][j+1] = 0
        dp2[i+1][j+1] = (dp1[i+1][j+1] + dp2[i][j+1] + dp2[i+1][j] - dp2[i][j]) % (10 ** 9 + 7)


print(dp2[-1][-1])
