Problem:
Score : 200 points

Problem Statement

You are given three strings A, B and C. Each of these is a string of length N consisting of lowercase English letters.

Our objective is to make all these three strings equal. For that, you can repeatedly perform the following operation:

Operation: Choose one of the strings A, B and C, and specify an integer i between 1 and N (inclusive). Change the i-th character from the beginning of the chosen string to some other lowercase English letter.

What is the minimum number of operations required to achieve the objective?

Constraints

1 \leq N \leq 100

Each of the strings A, B and C is a string of length N.

Each character in each of the strings A, B and C is a lowercase English letter.

Input

Input is given from Standard Input in the following format:

N
A
B
C

Output

Print the minimum number of operations required.

Sample Input 1

4
west
east
wait

Sample Output 1

3

In this sample, initially A = west、B = east、C = wait. We can achieve the objective in the minimum number of operations by performing three operations as follows:

Change the second character in A to a. A is now wast.

Change the first character in B to w. B is now wast.

Change the third character in C to s. C is now wast.

Sample Input 2

9
different
different
different

Sample Output 2

0

If A, B and C are already equal in the beginning, the number of operations required is 0.

Sample Input 3

7
zenkoku
touitsu
program

Sample Output 3

13

Solution in Java7 (OpenJDK 1.7.0) (judge verdict: Runtime Error)


import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		String A = sc.next();
		String B = sc.next();
		String C = sc.next();
		String[] strArraySubA = A.split("");
		String[] strArrayA = new String[A.length()];
		int count = 0;
		for (int i = 0; i < strArraySubA.length; i++) {
		    strArrayA[i] = strArraySubA[i];
		}
		String[] strArraySubB = B.split("");
		String[] strArrayB = new String[B.length()];
		for (int i = 0; i < strArraySubB.length; i++) {
		    strArrayB[i] = strArraySubB[i];
		}
		String[] strArraySubC = A.split("");
		String[] strArrayC = new String[A.length()];


		for (int i = 0; i < strArrayA.length; i++) {
		    // "strArray"を1文字ずつ表示
		    System.out.println("strArrayの要素番号" + i + "の時：" + strArrayA[i]);
		}
		for (int i = 0; i < strArrayB.length; i++) {
		    // "strArray"を1文字ずつ表示
		    System.out.println("strArrayの要素番号" + i + "の時：" + strArrayB[i]);
		}
		for (int i = 0; i < strArraySubC.length; i++) {
		    strArrayC[i] = strArraySubC[i];
		}
		for(int i = 0; i<N;i++) {
			if(strArrayA[i].equals(strArrayB[i])) {

			}else {
				strArrayB[i]=strArrayA[i];
				count ++;
			}
		}
		for(int i = 0; i<N;i++) {
			if(strArrayA[i].equals(strArrayC[i])) {

			}else {
				strArrayC[i]=strArrayA[i];
				count ++;
			}
		}
		System.out.println(count);

//		for (int i = 0; i < strArrayA.length; i++) {
//		    // "strArray"を1文字ずつ表示
//		    System.out.println("strArrayの要素番号" + i + "の時：" + strArrayA[i]);
//		}
//		for (int i = 0; i < strArrayB.length; i++) {
//		    // "strArray"を1文字ずつ表示
//	    System.out.println("strArrayの要素番号" + i + "の時：" + strArrayB[i]);
//		}
//		for (int i = 0; i < strArrayC.length; i++) {
//		    // "strArray"を1文字ずつ表示
//	    System.out.println("strArrayの要素番号" + i + "の時：" + strArrayC[i]);
//		}

//		int N = sc.nextInt();
//		int A = sc.nextInt();
//		int B = sc.nextInt();
//		int max=0;
//		int min=0;
//		if(N >= 1 && N<=100) {
////		nがa+b以下
//			if(A+B<=N) {
//				if(A>B) {
//					max = B;
//					min = 0;
//				}else if (A<=B) {
//					max = A;
//					min = 0;
//				}
//			}
////
//			if(A+B>N) {
//				if(A>=B) {
//					max = B;
//					min = (A+B)-N;
//				}else if(A<B) {
//					max = A;
//					min = (A+B)-N;
//				}
//			}
//			if(A==B && A==N) {
//				max = N;
//				min = N;
//			}
//		}
//		System.out.println(max +" "+ min);




	}
}