## 替换 插入 删除
## 动态规划
word1 = input()
word2 = input()
m = len(word1)
n = len(word2)
## 初始化
## dp[i][j] 表示以下标i-1为结尾的字符串word1,和以下标j-1为结尾的字符串word2,最近编辑距离为dp[i][j]
dp = [[0 for i in range(n+1)] for j in range(m+1)]
for j in range(n+1):
dp[0][j] = j
for i in range(m+1):
dp[i][0] = i
## 开始遍历
for i in range(1,m+1):
for j in range(1,n+1):
if word1[i-1] == word2[j-1]:## 相等即等于之前的操作步数
dp[i][j] = dp[i-1][j-1]
else:## dp[i-1][j]+1 表示 word1 删除操作 dp[i][j-1]+1 表示word1 插入操作 或者说是word2删除操作更直观 dp[i-1][j-1]+1 表示 替换操作
dp[i][j] = min(dp[i-1][j],dp[i][j-1],dp[i-1][j-1]) +1
print(dp[-1][-1])
04-29
1303
05-03
209
05-02
154