#include <iostream>
using namespace std;
int arr[1001][1001]= {};
int ar[2][1000001]= {};
int front=0, rear=0;
int m,n,A=0;
void pop()
{
int max = front-1;
cout << rear << ',' << max << endl;
cout << "----------------\n";
for(int i=rear; i<front; i++) {
cout << ar[0][i] << ':' << ar[1][i] << endl;
}
cout << "----------------\n";
for(int i = rear; i<=max; i++)
{
int x = ar[0][i];
int y = ar[1][i];
int kp = arr[x][y];
cout << x << ',' << y<<endl;
{
if(arr[x-1][y] == 0 && x-1 >= 0)
{
ar[0][front] = x-1;
ar[1][front] = y;
arr[x-1][y] = kp+1;
front++;
}
if(arr[x+1][y] == 0 && x+1 < n)
{
ar[0][front] = x+1;
ar[1][front] = y;
arr[x+1][y] = kp+1;
front++;
}
if(arr[x][y-1] == 0 && y-1 >= 0)
{
ar[0][front] = x;
ar[1][front] = y-1;
arr[x][y-1] = kp+1;
front++;
}
if(arr[x][y+1] == 0 && y+1 < m)
{
ar[0][front] = x;
ar[1][front] = y+1;
arr[x][y+1] = kp+1;
front++;
}
}
rear++;
}
A++;
}
void play()
{
while(1) {
if(rear == front) {
break;
}
else
pop();
}
}
void func()
{
for(int i=0; i<n; i++)
{
for(int j=0; j<m; j++)
{
if(arr[i][j]==1)
{
ar[0][front] = i;
ar[1][front] = j;
front++;
}
}
}
play();
}
int main()
{
int B=0;
cin>>m>>n;
for(int i=0; i<n; i++)
{
for(int j=0; j<m; j++)
{
cin>>arr[i][j];
}
}
func();
cout<<endl;
for(int i=0; i<n; i++)
{
for(int j=0; j<m; j++)
{
cout<<arr[i][j]<<' ';
}
cout<<endl;
}
for(int i=0; i<n; i++)
{
for(int j=0; j<m; j++)
{
if(arr[i][j]==0)
B++;
}
}
if(B>0)
{
cout<<-1;
return 0;
}
if(A==1)
cout<<0;
else if(A>1)
cout<<A-1;
}