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
'''f=open('input.txt')
g=open('output.txt', 'w')
nooftest=int(f.readline().strip())'''
#import cmath
import math
#import time
m,n=map(int,raw_input().split())
array=[]
for i in range(m):
    array.append(map(int,raw_input().split()))
def check(a1,a2,a3,a4):
    if a1==a2==a3==a4==1:
        return 0
    elif a1==a2==a3==a4==0:
        return 1
    elif (a1==a2==0 and a3==a4==1) or (a2==a3==0 and a4==a1==1) or (a3==a4==0 and a1==a2==1) or (a4==a1==0 and a2==a3==1):
        #print a1,a2,a3,a4,"here"
        return 1
    elif (a1==a3==0 and a2==a4==1) or(a2==a4==0 and a1==a3==1):
        return 2
    elif (a1==a2==a3==0 and a4==1) or (a2==a3==a4==0 and a1==1) or (a3==a4==a1==0 and a2==1) or (a4==a1==a2==0 and a3==1):
        if i>0 or j>0:
            return 2
        else:
            return 4
    else:
        if j>0 and array[i][j-1]==array[i+1][j-1]:
            return 1
        elif j<n-2 and array[i][j+2]==array[i+1][j+2]:
            return 1
        elif i>0 and array[i-1][j]==array[i-1][j+1]:
            return 1
        elif i<m-2 and array[i+2][j]==array[i+2][j+1]:
            return 1
        elif i>0 or j>0:
            return 2
        else:
            return 4
ans=4
for i in range(m-1):
    for j in range(n-1):
        k=check(array[i][j],array[i][j+1],array[i+1][j+1],array[i+1][j])
        if k==2:
            if j>0 and array[i][j-1]==array[i+1][j-1]==1:
                k=1
            elif j<n-2 and array[i][j+2]==array[i+1][j+2]==1:
                k=1
            elif i>0 and array[i-1][j]==array[i-1][j+1]==1:
                k=1
            elif i<m-2 and array[i+2][j]==array[i+2][j+1]==1:
                k=1
        if k<ans:
            ans=k
if ans<4:
    print ans
else:
    print -1