DIVS = 1000000007
def LI(): return [int(x) for x in input().split()]

N,M=LI()
SS=LI()
TT=LI()

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

for i in range(1,N+1):
    for j in range(1,M+1):
        if SS[i-1] != TT[j-1]:
            dp[i][j] = dp[i-1][j] + dp[i][j-1] - dp[i-1][j-1]
        else:
            dp[i][j] = (dp[i-1][j] + dp[i][j-1] + 1) % DIVS

print((dp[N][M]+1)%DIVS) DIVS = 1000000007 DIVS 1000000007 int(x) for x in input().split() for x in input().split() x input().split() ().split () input split for x in input().split() int(x) int x def LI(): return [int(x) for x in input().split()] LI N,M=LI() N LI() LI M SS=LI() SS LI() LI TT=LI() TT LI() LI [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(1,N+1):
    for j in range(1,M+1):
        if SS[i-1] != TT[j-1]:
            dp[i][j] = dp[i-1][j] + dp[i][j-1] - dp[i-1][j-1]
        else:
            dp[i][j] = (dp[i-1][j] + dp[i][j-1] + 1) % DIVS i range(1,N+1) range 1 N+1 N 1 for j in range(1,M+1):
        if SS[i-1] != TT[j-1]:
            dp[i][j] = dp[i-1][j] + dp[i][j-1] - dp[i-1][j-1]
        else:
            dp[i][j] = (dp[i-1][j] + dp[i][j-1] + 1) % DIVS j range(1,M+1) range 1 M+1 M 1 if SS[i-1] != TT[j-1]:
            dp[i][j] = dp[i-1][j] + dp[i][j-1] - dp[i-1][j-1]
        else:
            dp[i][j] = (dp[i-1][j] + dp[i][j-1] + 1) % DIVS SS[i-1] != TT[j-1] SS[i-1] SS i-1 i 1 TT[j-1] TT j-1 j 1 dp[i][j] = dp[i-1][j] + dp[i][j-1] - dp[i-1][j-1] dp[i][j] [i] dp i j 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 dp[i][j] = (dp[i-1][j] + dp[i][j-1] + 1) % DIVS dp[i][j] [i] dp i j (dp[i-1][j] + dp[i][j-1] + 1) % DIVS dp[i-1][j] + dp[i][j-1] + 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 1 DIVS print((dp[N][M]+1)%DIVS) print (dp[N][M]+1)%DIVS dp[N][M]+1 dp[N][M] [N] dp N M 1 DIVS dp=[[0]*(M+1) for _ in range(N+1)] [[0]*(M+1) for _ in range(N+1)] dp def LI(): return [int(x) for x in input().split()] def LI(): return [int(x) for x in input().split()] LI N,M=LI() LI() N TT=LI() LI() TT M=LI() LI() M SS=LI() LI() SS DIVS = 1000000007 1000000007 DIVS
DIVS = 1000000007
def LI(): return [int(x) for x in input().split()]

N,M=LI()
SS=LI()
TT=LI()

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

for i in range(1,N+1):
    for j in range(1,M+1):
        if SS[i-1] != TT[j-1]:
            dp[i][j] = dp[i-1][j] + dp[i][j-1] - dp[i-1][j-1]
        else:
            dp[i][j] = (dp[i-1][j] + dp[i][j-1] + 1) % DIVS

print((dp[N][M]+1)%DIVS)