#include<iostream>
#include<stdlib.h>
bool proveri(int **m,int r1,int r2,int k1,int k2){ 
	int i,j;
	int x;
	x=m[r1][k1];
	for(i=r1;i<r2;i++)
	for(j=k1;j<k2;j++)
	if(m[i][j]!=x) return false;
	return true;
} 
using namespace std;
int main(){
int N,**m,K,*nk,kec=0,dva=0,pogodno=0,brojacko=0,i,j;
cin>>N;
m=new int *[N];
for(i=0;i<N;i++){
	m[i]=new int[N];
}
cin>>K;
for(i=0;i<N;i++){
	for(j=0;j<N;j++)
	{
		cin>>m[i][j];
		if(m[i][j]==1) kec++;
		if(m[i][j]==2) dva++;
		if(m[i][j]==m[0][0]) brojacko++;
	}
}
if(brojacko==N*N && K!=2){
	pogodno=1;
	cout<<pogodno;
}
if(K==2){
	if(kec==N*N || dva==N*N)
	pogodno=1;
	else{
		for(i=0;i<N-1;i++)
		if(proveri(m,0,i,0,N)==true && proveri(m,i,N-1,0,N)==true || proveri(m,0,N,0,i)==true&&proveri(m,0,N,i,N-1)==true)
		pogodno=2;
		else pogodno=1;
	}
	cout<<pogodno;
}
}