#include <stdio.h>
int arr[101][101]= {};
int queue[10000][2]= {};
int front=-1, rear=-1;
int m, n;
void enq(int x, int y)
{
rear++;
queue[rear][0]=x;
queue[rear][1]=y;
}
void bfs(int x, int y)
{
if(x>=0&&x<n&&y>=0&&y<m&&arr[x][y]==0)
{
enq(x, y);
arr[x][y]=1;
}
}
void di()
{
int max=rear;
int i,x,y;
for(i=front+1;i<=max;i++)
{
front++;
x=queue[i][0];
y=queue[i][1];
bfs(x,y+1);
bfs(x,y-1);
bfs(x+1,y);
bfs(x-1,y);
}
}
int main()
{
int i, j, x, y, day=0;
scanf("%d %d", &m, &n);
for(i=0; i<n; i++)
{
for(j=0; j<m; j++)
{
scanf("%d", &arr[i][j]);
if(arr[i][j]==1)
{
enq(i, j);
}
}
}
while(1)
{
if(front!=rear)
{
di();
day++;
}
else
{
break;
}
}
for(i=0; i<n; i++)
{
for(j=0; j<m; j++)
{
if(arr[i][j]==0)
{
printf("-1");
return 0;
}
}
}
printf("%d", --day);
return 0;
}