int combination(String a, String b, char[] cData, int count) {
		if (count == 0) {
			int total = 0;
			// 作成された変換マトリックスから、一致数を計算する。
			for (int i = 0; i < a.length(); i++) {
				if (cData[a.charAt(i) - 'A'] == b.charAt(i)) {
					total++;
				}
			}
			return total;
		} else {
			char[] tmpData = cData.clone();
			int max = 0;
			// 配列と現在の再帰数を利用して、順列の文字を生成する
			for (int i = 0; i < cData.length; i++) {
				if (tmpData[i] == 0) {
					tmpData[i] = (char) ('A' + count - 1);
					int ret = combination(a, b, tmpData, count - 1);
					max = Math.max(max, ret);
					tmpData = cData.clone();
				}
			}
			return max;
		}
	}