| 123456789101112131415161718192021222324252627 | func minDistance(word1 string, word2 string) int {	// dp[i][j] means the LCS of s1[0:i] && s2[0:j],	// then if s1[i] == s2[j], dp[i+1][j+1] = max(dp[i+1][j+1], dp[i][j]+1)	// else dp[i+1][j+1] = max(dp[i][j+1], dp[i+1][j])	m, n := len(word1), len(word2)	dp := make([][]int, m+1)	for i := range dp {		dp[i] = make([]int, n+1)	}	for i := range word1 {		for j := range word2 {			if word1[i] == word2[j] {				dp[i+1][j+1] = maxInt(dp[i+1][j+1], dp[i][j]+1)			} else {				dp[i+1][j+1] = maxInt(dp[i][j+1], dp[i+1][j])			}		}	}	return m + n - 2*dp[m][n]}func maxInt(x, y int) int {	if x < y {		return y	}	return x}
 |