n, m = map(int, input().split())
S = input().strip()
T = input().strip()

# DPテーブルの初期化
dp = [[0] * (m + 1) for _ in range(n + 1)]
for i in range(n + 1):
    dp[i][0] = i
for j in range(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]:
            cost = 0
        else:
            cost = 1
        # 変更、削除、挿入の最小値を選ぶ
        dp[i][j] = min(
            dp[i-1][j-1] + cost,
            dp[i-1][j] + 1,
            dp[i][j-1] + 1
        )

print(dp[n][m])