int minDistance(string s1, string s2) {
int m = s1.size(), n = s2.size();
vector<vector<int>> dp(m + 1, vector<int>(n + 1, 0));
for (int i = 1; i <= m; i++)
dp[i][0] = i;
for (int i = 1; i <=n; i++)
dp[0][i] = i;
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
if (s1[i] == s2[j])
dp[i + 1][j + 1] = dp[i][j];
else
dp[i + 1][j + 1] = min(min(1 + dp[i][j + 1], 1 + dp[i][j]), 1 + dp[i + 1][j]);//change insert delete
}
}
return dp[m][n];
}