Edit Distance Dynamic Programming (in C++) Levenshtein distance Optimal string alignment distance Damerau-Levenshtein distance IDE Visual Studio 2019