MOD = 10**9 + 7


def main():
    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)]
    for i in range(N+1):
        dp[i][0] = 1
    for i in range(M+1):
        dp[0][i] = 1
    ans = 1
    for i in range(N):
        for j in range(M):
            if S[i] == T[j]:
                cur = dp[i][j]
            else:
                cur = 0
            dp[i+1][j+1] = (dp[i+1][j] + dp[i][j+1] +
                            - dp[i][j] + cur) % MOD
#    print(dp)
    print(dp[N][M])


if __name__ == "__main__":
    main() MOD = 10**9 + 7 MOD 10**9 + 7 10**9 10 9 7 def main():
    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)]
    for i in range(N+1):
        dp[i][0] = 1
    for i in range(M+1):
        dp[0][i] = 1
    ans = 1
    for i in range(N):
        for j in range(M):
            if S[i] == T[j]:
                cur = dp[i][j]
            else:
                cur = 0
            dp[i+1][j+1] = (dp[i+1][j] + dp[i][j+1] +
                            - dp[i][j] + cur) % MOD
#    print(dp)
    print(dp[N][M]) main 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)] 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 ans = 1 ans 1 for i in range(N):
        for j in range(M):
            if S[i] == T[j]:
                cur = dp[i][j]
            else:
                cur = 0
            dp[i+1][j+1] = (dp[i+1][j] + dp[i][j+1] +
                            - dp[i][j] + cur) % MOD
#    print(dp)
     i range(N) range N for j in range(M):
            if S[i] == T[j]:
                cur = dp[i][j]
            else:
                cur = 0
            dp[i+1][j+1] = (dp[i+1][j] + dp[i][j+1] +
                            - dp[i][j] + cur) % MOD
#    print(dp)
     j range(M) range M if S[i] == T[j]:
                cur = dp[i][j]
            else:
                cur = 0
             S[i] == T[j] S[i] S i T[j] T j cur = dp[i][j] cur dp[i][j] [i] dp i j cur = 0 cur 0 dp[i+1][j+1] = (dp[i+1][j] + dp[i][j+1] +
                            - dp[i][j] + cur) % MOD dp[i+1][j+1] [i+1] dp i+1 i 1 j+1 j 1 (dp[i+1][j] + dp[i][j+1] +
                            - dp[i][j] + cur) % MOD dp[i+1][j] + dp[i][j+1] +
                            - dp[i][j] + cur dp[i+1][j] + dp[i][j+1] +
                            - dp[i][j] 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][j] dp[i][j] [i] dp i j cur MOD print(dp[N][M]) print dp[N][M] [N] dp N M if __name__ == "__main__":
    main() __name__ == "__main__" __name__ "__main__" main() main MOD = 10**9 + 7 10**9 + 7 MOD def main():
    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)]
    for i in range(N+1):
        dp[i][0] = 1
    for i in range(M+1):
        dp[0][i] = 1
    ans = 1
    for i in range(N):
        for j in range(M):
            if S[i] == T[j]:
                cur = dp[i][j]
            else:
                cur = 0
            dp[i+1][j+1] = (dp[i+1][j] + dp[i][j+1] +
                            - dp[i][j] + cur) % MOD
#    print(dp)
    print(dp[N][M]) def main():
    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)]
    for i in range(N+1):
        dp[i][0] = 1
    for i in range(M+1):
        dp[0][i] = 1
    ans = 1
    for i in range(N):
        for j in range(M):
            if S[i] == T[j]:
                cur = dp[i][j]
            else:
                cur = 0
            dp[i+1][j+1] = (dp[i+1][j] + dp[i][j+1] +
                            - dp[i][j] + cur) % MOD
#    print(dp)
    print(dp[N][M]) main
MOD = 10**9 + 7


def main():
    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)]
    for i in range(N+1):
        dp[i][0] = 1
    for i in range(M+1):
        dp[0][i] = 1
    ans = 1
    for i in range(N):
        for j in range(M):
            if S[i] == T[j]:
                cur = dp[i][j]
            else:
                cur = 0
            dp[i+1][j+1] = (dp[i+1][j] + dp[i][j+1] +
                            - dp[i][j] + cur) % MOD
#    print(dp)
    print(dp[N][M])


if __name__ == "__main__":
    main()
