import sys
input = sys.stdin.readline

mod = 10**9+7
n,m= map(int, input().split())
s= list(map(int, input().split()))
t= list(map(int, input().split()))

# dp[i][j]:nからi番目までとtからj番目まで取ったときの共通部分整数列の組み合わせ
dp=[[1]*(m+1) for i in range(n+1)]

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

print(dp[n][m]) import sys sys input = sys.stdin.readline input sys.stdin.readline sys.stdin sys stdin readline mod = 10**9+7 mod 10**9+7 10**9 10 9 7 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 [1]*(m+1) for i in range(n+1) for i in range(n+1) i range(n+1) range n+1 n 1 for i in range(n+1) [1]*(m+1) [1] 1 m+1 m 1 dp=[[1]*(m+1) for i in range(n+1)] dp [[1]*(m+1) for i in range(n+1)] for i in range(n):
    for j in range(m):
        if s[i]==t[j]:
            dp[i+1][j+1]=dp[i+1][j]+dp[i][j+1]
        else:
            dp[i+1][j+1]=dp[i+1][j]+dp[i][j+1]-dp[i][j]
        dp[i+1][j+1]%=mod i range(n) range n for j in range(m):
        if s[i]==t[j]:
            dp[i+1][j+1]=dp[i+1][j]+dp[i][j+1]
        else:
            dp[i+1][j+1]=dp[i+1][j]+dp[i][j+1]-dp[i][j]
        dp[i+1][j+1]%=mod j range(m) range m if s[i]==t[j]:
            dp[i+1][j+1]=dp[i+1][j]+dp[i][j+1]
        else:
            dp[i+1][j+1]=dp[i+1][j]+dp[i][j+1]-dp[i][j]
         s[i]==t[j] s[i] s i t[j] t j dp[i+1][j+1]=dp[i+1][j]+dp[i][j+1] 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+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]=dp[i+1][j]+dp[i][j+1]-dp[i][j] 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] 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] [i] dp i j dp[i+1][j+1]%=mod 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 n,m= map(int, input().split()) map(int, input().split()) n s= list(map(int, input().split())) list(map(int, input().split())) s mod = 10**9+7 10**9+7 mod t= list(map(int, input().split())) list(map(int, input().split())) t dp=[[1]*(m+1) for i in range(n+1)] [[1]*(m+1) for i in range(n+1)] dp input = sys.stdin.readline sys.stdin.readline input m= map(int, input().split()) map(int, input().split()) m
import sys
input = sys.stdin.readline

mod = 10**9+7
n,m= map(int, input().split())
s= list(map(int, input().split()))
t= list(map(int, input().split()))

# dp[i][j]:nからi番目までとtからj番目まで取ったときの共通部分整数列の組み合わせ
dp=[[1]*(m+1) for i in range(n+1)]

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

print(dp[n][m])