n,m=map(int,raw_input().split()) S=raw_input() T=raw_input() dp=[[10000 for i in range(m+1)] for j in range(n+1)] dp[0][0]=0 for i in range(1,n+1): dp[i][0] = i for j in range(1,m+1): dp[0][j]= j for i in range(1, n+1): for j in range(1, m+1): if S[i-1]==T[j-1]: dp[i][j] = min(dp[i][j],dp[i-1][j-1]) else: dp[i][j] = min(dp[i][j],1+dp[i-1][j-1]) dp[i][j]=min(dp[i][j],dp[i-1][j]+1) # delete S[i] dp[i][j]=min(dp[i][j],dp[i][j-1]+1) # add T[j] print dp[n][m]