93 {
94 int n = s.Length;
95 int m = t.Length;
96 int[,] d = new int[n + 1, m + 1];
97
98
99 if (n == 0) {
100 return m;
101 }
102
103 if (m == 0) {
104 return n;
105 }
106
107
108 for (int i = 0; i <= n; d[i, 0] = i++) {
109 }
110
111 for (int j = 0; j <= m; d[0, j] = j++) {
112 }
113
114
115 for (int i = 1; i <= n; i++) {
116
117 for (int j = 1; j <= m; j++) {
118
119 int cost = (t[j - 1] == s[i - 1]) ? 0 : 2;
120
121
122 d[i, j] = Math.Min(
123 Math.Min(d[i - 1, j] + 2, d[i, j - 1] + 2),
124 d[i - 1, j - 1] + cost);
125 }
126 }
127
128 return d[n, m];
129 }