package main
import "fmt"

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param str1 string字符串 
 * @param str2 string字符串 
 * @return int整型
*/
func editDistance( str1 string ,  str2 string ) int {
    dp := make([][]int, len(str1) + 1) 
    for i:=0;i<=len(str1);i++ {
        dp[i] = make([]int, len(str2) + 1)
        dp[i][0] = i
    }
    for i:=0;i<=len(str2);i++ {
        dp[0][i] = i
    }
    fmt.Println(dp)
    for i:=1;i <= len(str1);i++ {
        for j:=1; j <= len(str2);j++ {
            if str1[i-1] != str2[j-1] {
                dp[i][j] = min(min(dp[i-1][j-1], dp[i-1][j]), dp[i][j-1]) + 1
            } else if str1[i-1] == str2[j-1] {
                dp[i][j] = dp[i-1][j-1]
            }
        }
    }
    fmt.Println(dp)
    return dp[len(str1)][len(str2)]
}

func min(a,b int) int {
    if a < b {
        return a
    }
    return b
}