in internal/utils/error.go [54:82]
func editDistance(a, b string) int {
n, m := len(a), len(b)
f := make([][]int, n+1)
for i := range f {
f[i] = make([]int, m+1, 1<<16)
}
for i := 1; i <= n; i++ {
for j := 1; j <= m; j++ {
f[i][j] = 1 << 16
}
}
for i := 1; i <= n; i++ {
for j := 1; j <= m; j++ {
if a[i-1] == b[j-1] {
f[i][j] = f[i-1][j-1]
}
if f[i][j] > f[i-1][j]+1 {
f[i][j] = f[i-1][j] + 1
}
if f[i][j] > f[i][j-1]+1 {
f[i][j] = f[i][j-1] + 1
}
if f[i][j] > f[i-1][j-1]+1 {
f[i][j] = f[i-1][j-1] + 1
}
}
}
return f[n][m]
}