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