public static void Main()
Console.WriteLine(Distance("abcydef", "abxidef"));
public static int Distance(string s1, string s2) {
return DistanceDynamic(s1, s2, s1.Length, s2.Length);
public static int DistanceDynamic(string s1, string s2, int m, int n) {
int[,] dist = new int[m + 1, n + 1];
for (int i = 0; i <= m; i++) {
for (int j = 0; j <= n; j++) {
else if (s1[i - 1] == s2[j - 1])
dist[i, j] = dist [i - 1, j - 1];
dist[i, j] = 1 + Math.Min(Math.Min(dist[i - 1, j], dist[i, j - 1]), dist[i - 1, j - 1]);