public static int[][] calcScoreMatrix(char[] st1, char[] st2) {
		int[][] score = new int[st1.length+1][st2.length+1];
		// расстояния между одной строкой и другой пустой
		for (int i = 0; i <= st1.length; i++) {
			score[i][0] = i;
		}
		for (int i = 0; i <= st2.length; i++) {
			score[0][i] = i;
		}

		// заполним матрицу (кроме нулевой строки и нулевого столбца)
		for (int i = 0; i < st1.length; i++) {
			for (int j = 0; j < st2.length; j++) {
				if (st1[i] == st2[j])// не нужно операции никакой
					score[i + 1][j + 1] = score[i][j];
				else {
					// минимальный счёт
					int delScore = score[i][j + 1] + 1;
					int instScore = score[i + 1][j] + 1;
					int subScore = score[i][j] + 1;
					score[i + 1][j + 1] = NumberUtils.getMin(delScore, instScore, subScore);
				}
			}
		}
		return score;
	}