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])