import sys
input = sys.stdin.readline

def main():
    N,M = map(int,input().split())
    s = list(map(int,input().split()))
    t = list(map(int,input().split()))
    MOD = 10**9+7
    
    num = [[0 for _ in range(M+1)] for _ in range(N+1)]
    dp = [[0 for _ in range(M+1)] for _ in range(N+1)]
    for i in range(N+1):
        dp[i][0] = 1
    for j in range(M+1):
        dp[0][j] = 1

    ans = 1
    for i in range(N):
        for j in range(M):
            if s[i] == t[j]:
                num[i+1][j+1] = (dp[i][j])%MOD
                ans += num[i+1][j+1]
            dp[i+1][j+1] = (dp[i][j+1]+dp[i+1][j]-dp[i][j]+num[i+1][j+1])%MOD
    
    print(ans%MOD)

if __name__ == "__main__":
    main() import sys sys input = sys.stdin.readline input sys.stdin.readline sys.stdin sys stdin readline def main():
    N,M = map(int,input().split())
    s = list(map(int,input().split()))
    t = list(map(int,input().split()))
    MOD = 10**9+7
    
    num = [[0 for _ in range(M+1)] for _ in range(N+1)]
    dp = [[0 for _ in range(M+1)] for _ in range(N+1)]
    for i in range(N+1):
        dp[i][0] = 1
    for j in range(M+1):
        dp[0][j] = 1

    ans = 1
    for i in range(N):
        for j in range(M):
            if s[i] == t[j]:
                num[i+1][j+1] = (dp[i][j])%MOD
                ans += num[i+1][j+1]
            dp[i+1][j+1] = (dp[i][j+1]+dp[i+1][j]-dp[i][j]+num[i+1][j+1])%MOD
    
    print(ans%MOD) 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 MOD = 10**9+7 MOD 10**9+7 10**9 10 9 7 [0 for _ in range(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 for _ in range(M+1)] num = [[0 for _ in range(M+1)] for _ in range(N+1)] num [[0 for _ in range(M+1)] for _ in range(N+1)] [0 for _ in range(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 for _ in range(M+1)] dp = [[0 for _ in range(M+1)] for _ in range(N+1)] dp [[0 for _ in range(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 j in range(M+1):
        dp[0][j] = 1

     j range(M+1) range M+1 M 1 dp[0][j] = 1 dp[0][j] [0] dp 0 j 1 ans = 1 ans 1 for i in range(N):
        for j in range(M):
            if s[i] == t[j]:
                num[i+1][j+1] = (dp[i][j])%MOD
                ans += num[i+1][j+1]
            dp[i+1][j+1] = (dp[i][j+1]+dp[i+1][j]-dp[i][j]+num[i+1][j+1])%MOD
    
     i range(N) range N for j in range(M):
            if s[i] == t[j]:
                num[i+1][j+1] = (dp[i][j])%MOD
                ans += num[i+1][j+1]
            dp[i+1][j+1] = (dp[i][j+1]+dp[i+1][j]-dp[i][j]+num[i+1][j+1])%MOD
    
     j range(M) range M if s[i] == t[j]:
                num[i+1][j+1] = (dp[i][j])%MOD
                ans += num[i+1][j+1]
             s[i] == t[j] s[i] s i t[j] t j num[i+1][j+1] = (dp[i][j])%MOD num[i+1][j+1] [i+1] num i+1 i 1 j+1 j 1 (dp[i][j])%MOD dp[i][j] [i] dp i j MOD ans += num[i+1][j+1] ans num[i+1][j+1] [i+1] num i+1 i 1 j+1 j 1 dp[i+1][j+1] = (dp[i][j+1]+dp[i+1][j]-dp[i][j]+num[i+1][j+1])%MOD dp[i+1][j+1] [i+1] dp i+1 i 1 j+1 j 1 (dp[i][j+1]+dp[i+1][j]-dp[i][j]+num[i+1][j+1])%MOD dp[i][j+1]+dp[i+1][j]-dp[i][j]+num[i+1][j+1] dp[i][j+1]+dp[i+1][j]-dp[i][j] dp[i][j+1]+dp[i+1][j] dp[i][j+1] [i] dp i j+1 j 1 dp[i+1][j] [i+1] dp i+1 i 1 j dp[i][j] [i] dp i j num[i+1][j+1] [i+1] num i+1 i 1 j+1 j 1 MOD print(ans%MOD) print ans%MOD ans MOD if __name__ == "__main__":
    main() __name__ == "__main__" __name__ "__main__" main() main def main():
    N,M = map(int,input().split())
    s = list(map(int,input().split()))
    t = list(map(int,input().split()))
    MOD = 10**9+7
    
    num = [[0 for _ in range(M+1)] for _ in range(N+1)]
    dp = [[0 for _ in range(M+1)] for _ in range(N+1)]
    for i in range(N+1):
        dp[i][0] = 1
    for j in range(M+1):
        dp[0][j] = 1

    ans = 1
    for i in range(N):
        for j in range(M):
            if s[i] == t[j]:
                num[i+1][j+1] = (dp[i][j])%MOD
                ans += num[i+1][j+1]
            dp[i+1][j+1] = (dp[i][j+1]+dp[i+1][j]-dp[i][j]+num[i+1][j+1])%MOD
    
    print(ans%MOD) def main():
    N,M = map(int,input().split())
    s = list(map(int,input().split()))
    t = list(map(int,input().split()))
    MOD = 10**9+7
    
    num = [[0 for _ in range(M+1)] for _ in range(N+1)]
    dp = [[0 for _ in range(M+1)] for _ in range(N+1)]
    for i in range(N+1):
        dp[i][0] = 1
    for j in range(M+1):
        dp[0][j] = 1

    ans = 1
    for i in range(N):
        for j in range(M):
            if s[i] == t[j]:
                num[i+1][j+1] = (dp[i][j])%MOD
                ans += num[i+1][j+1]
            dp[i+1][j+1] = (dp[i][j+1]+dp[i+1][j]-dp[i][j]+num[i+1][j+1])%MOD
    
    print(ans%MOD) main input = sys.stdin.readline sys.stdin.readline input
import sys
input = sys.stdin.readline

def main():
    N,M = map(int,input().split())
    s = list(map(int,input().split()))
    t = list(map(int,input().split()))
    MOD = 10**9+7
    
    num = [[0 for _ in range(M+1)] for _ in range(N+1)]
    dp = [[0 for _ in range(M+1)] for _ in range(N+1)]
    for i in range(N+1):
        dp[i][0] = 1
    for j in range(M+1):
        dp[0][j] = 1

    ans = 1
    for i in range(N):
        for j in range(M):
            if s[i] == t[j]:
                num[i+1][j+1] = (dp[i][j])%MOD
                ans += num[i+1][j+1]
            dp[i+1][j+1] = (dp[i][j+1]+dp[i+1][j]-dp[i][j]+num[i+1][j+1])%MOD
    
    print(ans%MOD)

if __name__ == "__main__":
    main()
