n,m = map(int,input().split())
s1 = input()
s2 = input()
# 空间优化方案(滚动数组)
curr = [0]*(m+1)
for i in range(1,n+1):
prev = curr
curr = [0]*(m+1)
for j in range(1,m+1):
if s1[i-1] == s2[j-1]:
curr[j] = prev[j-1]+1
else:
curr[j] = max(prev[j],curr[j-1])
print(curr[m])


京公网安备 11010502036488号