public class EditDistance { public static int distance(String str1, String str2, boolean verbose) { int length1 = str1.length(); int length2 = str2.length(); int matrix[][] = new int[length1+1][length2+1]; for (int i = 0; i < length1; i++) matrix[i][0] = i; for (int i = 0; i < length2; i++) matrix[0][i] = i; for (int i = 1; i <= length1; i++) { for (int j = 1; j <= length2; j++) { if (str1.charAt(i-1) == str2.charAt(j-1)) matrix[i][j] = minimum(matrix[i-1][j], matrix[i][j-1], matrix[i-1][j-1]); else matrix[i][j] = minimum(matrix[i-1][j], matrix[i][j-1], matrix[i-1][j-1]+1); } } return matrix[str1.length()+1][str2.length()+1]; } private static int minimum (int one, int two, int three) { return Math.min(Math.min(one, two), three); } }