package utils import "strings" func LevenshteinDistance(s1, s2 string) int { s1 = strings.ToLower(s1) s2 = strings.ToLower(s2) len1 := len(s1) len2 := len(s2) matrix := make([][]int, len1+1) for i := range matrix { matrix[i] = make([]int, len2+1) matrix[i][0] = i } for j := range matrix[0] { matrix[0][j] = j } for i := 1; i <= len1; i++ { for j := 1; j <= len2; j++ { cost := 0 if s1[i-1] != s2[j-1] { cost = 1 } matrix[i][j] = min( matrix[i-1][j]+1, min(matrix[i][j-1]+1, matrix[i-1][j-1]+cost), ) } } return matrix[len1][len2] }