Problem: Golu is given a task of clearing coins fallen down  on floor. Naughty being his modus operandi, he thought of playing a game while clearing coins. He arranges the coins like an M X N matrix with random heads (1) and tails (0).

In every move, he chooses a sub-matrix of size L X B [such that max(L,B) >1] and interchanges all heads to tails and vice-versa present in the chosen sub-matrix. Then if he finds a 2X2 sub-matrix exclusively of heads anywhere in the M X N matrix, he removes those coins.

Your task is simple. You have to report the minimum no. of moves taken by him before he clears his first 2X2 sub-matrix.

Input:

Your first line of input consists of two numbers M, N. Each of the next M lines consists of N space-separated integers which are either 0 or 1.

Output:

Output a single line answer giving the minimum no. of steps taken before his first clearance. If it is impossible for him to do so, print "-1" (quotes for clarity).

Constraints :

2 ≤ M,N ≤ 10

Author : Srinivas

Testers : Shubham Parekh , Shreyans

(By IIT Kgp HackerEarth Programming Club)

SAMPLE INPUT
2 4
0 0 1 1
0 0 1 1

SAMPLE OUTPUT
0

Solution (in PYTHON):

Solution:
M, N = [int(_) for _ in raw_input().split()]
m = [[0] * N] * M
for i in range(M):
	m[i] = [int(_) for _ in raw_input().split()]
ans = 2
corners = [(0, 0), (0, N-2), (M-2, 0), (M-2, N-2)]
if M == 2 and N == 2:
	s = m[0][0] + m[0][1] + m[1][0] + m[1][1]
	if s == 4:
		ans = 0
	elif s == 0:
		ans = 1
	elif s == 2:
		if m[0][0] != m[0][1] and m[0][0] != m[1][0]:
			ans = 2
		else:
			ans = 1
	else:
		ans = -1
else:
	for i in range(M-1):
		for j in range(N-1):
			tl = m[i][j]
			tr = m[i][j+1]
			bl = m[i+1][j]
			br = m[i+1][j+1]
			s = tl + tr + bl + br
			if (i,j) in corners:
				if s == 4:
					ans = 0
				elif s == 0:
					ans = min(ans, 1)
				elif s == 2:
					if tl != tr and tl != bl:
						ans = min(ans, 2)
					else:
						ans = min(ans, 1)
				elif s == 1:
					if i == 0 and j == 0 and tl == 1:
						ans = min(ans, 2)
					elif i == 0 and j == N-2 and tr == 1:
						ans = min(ans, 2)
					elif i == M-2 and j == 0 and bl == 1:
						ans = min(ans, 2)
					elif i == M-2 and j == N-2 and br == 1:
						ans = min(ans, 2)
					else:
						ans = min(ans, 2)
				elif s == 3:
					if i == 0 and j == 0 and tl == 0:
						ans = min(ans, 2)
					elif i == 0 and j == N-2 and tr == 0:
						ans = min(ans, 2)
					elif i == M-2 and j == 0 and bl == 0:
						ans = min(ans, 2)
					elif i == M-2 and j == N-2 and br == 0:
						ans = min(ans, 2)
					else:
						ans = min(ans, 1)
			else:
				if s == 4:
					ans = 0
				elif s == 1:
					ans = min(ans, 2)
				elif s == 0 or s == 3:
					ans = min(ans, 1)
				else:
					if tl != tr and tl != bl:
						ans = min(ans, 2)
					else:
						ans = min(ans, 1)
print ans