n, m = map(int, input().split()) s = str(input()) t = str(input()) INF = 10**18 dp = [[INF]*1010 for _ in range(1010)] dp[0][0] = 0 for i in range(-1, n): for j in range(-1, m): if i == -1 and j == -1: continue if i >= 0 and j >= 0: 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) if i >= 0: dp[i+1][j+1] = min(dp[i+1][j+1], dp[i][j+1]+1) if j >= 0: dp[i+1][j+1] = min(dp[i+1][j+1], dp[i+1][j]+1) print(dp[n][m])