N, M = map(int, input().split()) S = ' ' + input() T = ' ' + input() INF = 10**10 DP = [] for _ in range(N+1): DP.append([INF]*(M+1)) DP[0][0] = 0 for i in range(N+1): for j in range(M+1): if i > 0 and j > 0: if S[i] == T[j]: DP[i][j] = min(DP[i][j], DP[i-1][j-1]) else: DP[i][j] = min(DP[i][j], DP[i-1][j-1] + 1) if i > 0: DP[i][j] = min(DP[i-1][j] + 1, DP[i][j]) if j > 0: DP[i][j] = min(DP[i][j-1] + 1, DP[i][j]) print(DP[N][M])