Magnus decided to play a classic chess game. Though what he saw in his locker shocked him! His favourite chessboard got broken into 4 pieces, each of size n by n, n is always odd. And what's even worse, some squares were of wrong color. j-th square of the i-th row of k-th piece of the board has color ak, i, j; 1 being black and 0 being white. 

Now Magnus wants to change color of some squares in such a way that he recolors minimum number of squares and obtained pieces form a valid chessboard. Every square has its color different to each of the neightbouring by side squares in a valid board. Its size should be 2n by 2n. You are allowed to move pieces but not allowed to rotate or flip them.

Input

The first line contains odd integer n (1 ≤ n ≤ 100) — the size of all pieces of the board. 

Then 4 segments follow, each describes one piece of the board. Each consists of n lines of n characters; j-th one of i-th line is equal to 1 if the square is black initially and 0 otherwise. Segments are separated by an empty line.

Output

Print one number — minimum number of squares Magnus should recolor to be able to obtain a valid chessboard.

Examples

Input

1
0

0

1

0


Output

1


Input

3
101
010
101

101
000
101

010
101
011

010
101
010


Output

2
from itertools import permutations

n = int(input())
p1 = [input() for _ in range(n)]
input()
p2 = [input() for _ in range(n)]
input()
p3 = [input() for _ in range(n)]
input()
p4 = [input() for _ in range(n)]


def usta(a, b, c, d):
    sza = []

    for i in range(n * 2):
        li = [a, b, c, d]

        if i < n:
                g = min(li)

                if g == a:
                    sza.append(p1[i])
                elif g == b:
                    sza.append(p2[i])
                elif g == c:
                    sza.append(p3[i])
                elif g == d:
                    sza.append(p4[i])

                li.remove(g)

                g = min(li)

                if g == a:
                    sza[-1] += p1[i]
                elif g == b:
                    sza[-1] += p2[i]
                elif g == c:
                    sza[-1] += p3[i]
                elif g == d:
                    sza[-1] += p4[i]

                li.remove(g)

        else:
                li.remove(min(li))
                li.remove(min(li))

                i -= n

                g = min(li)

                if g == a:
                    sza.append(p1[i])
                elif g == b:
                    sza.append(p2[i])
                elif g == c:
                    sza.append(p3[i])
                elif g == d:
                    sza.append(p4[i])

                li.remove(g)

                g = min(li)

                if g == a:
                    sza[-1] += p1[i]
                elif g == b:
                    sza[-1] += p2[i]
                elif g == c:
                    sza[-1] += p3[i]
                elif g == d:
                    sza[-1] += p4[i]

                li.remove(g)





    last = True
    c1 = 0
    c2 = 0


    for j in sza:
        b = False if last == True else True
        last = False if last == True else True

        for p in j:
                if b is True:
                    if p != "1":
                        c1 += 1

                    else:
                        c2 += 1

                else:
                    if p == "1":
                        c1 += 1

                    else:
                        c2 += 1


                b = True if b is False else False



    return min(c1, c2)

out = float("inf")

for per in list(permutations("1234")):
    out = min(out, usta(int(per[0]), int(per[1]), int(per[2]), int(per[3])))

print(out)
