#include <iostream>
using namespace std;
int main() {
// your code goes here
long long int table[1000][1000],prow[1000][1000],pcol[1000][1000],i,j,k,l,m,n,o,p,q,r,s,t;
cin>>m>>n;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
cin>>table[i][j];
}
}
for(i=0;i<m;i++)
{
prow[i][n-1]=n;
}
for(i=0;i<n;i++)
{
pcol[m-1][i]=m;
}
for(i=0;i<m;i++)
{
long long int last_col=n;
for(j=n-1;j>=0;j--)
{
if(table[i][j]==0)
{
prow[i][j]=j;
last_col=j;
}
else
{
prow[i][j]=last_col;
}
}
}
for(j=0;j<n;j++)
{
long long int last_col=m;
for(i=m-1;i>=0;i--)
{
if(table[i][j]==0)
{
pcol[i][j]=i;
last_col=i;
}
else
{
pcol[i][j]=last_col;
}
}
}
/* for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
cout<<prow[i][j]<<" ";
}
cout<<endl;
}
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
cout<<pcol[i][j]<<" ";
}
cout<<endl;
}*/
long long int x_max=-111000;
for(i=0;i<m;i++)
{
j=0;
while(j<n)
{
if(table[i][j]==0)
{
j++;
continue;
}
l=prow[i][j];
long long int x_min=1000000;
for(k=j;k<l;k++)
{
o=pcol[i][k];
x_min=min(o-i,x_min);
}
x_min=min(x_min,l-j);
x_max=max(x_min,x_max);
j++;
}
}
if(x_max!=-111000)
cout<<x_max<<endl;
else
cout<<0<<endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKSB7CgkvLyB5b3VyIGNvZGUgZ29lcyBoZXJlCglsb25nIGxvbmcgaW50IHRhYmxlWzEwMDBdWzEwMDBdLHByb3dbMTAwMF1bMTAwMF0scGNvbFsxMDAwXVsxMDAwXSxpLGosayxsLG0sbixvLHAscSxyLHMsdDsKCWNpbj4+bT4+bjsKCWZvcihpPTA7aTxtO2krKykKCXsKCQlmb3Ioaj0wO2o8bjtqKyspCgkJewoJCQljaW4+PnRhYmxlW2ldW2pdOwoJCX0KCX0KCWZvcihpPTA7aTxtO2krKykKCXsKCQlwcm93W2ldW24tMV09bjsKCX0KCWZvcihpPTA7aTxuO2krKykKCXsKCQlwY29sW20tMV1baV09bTsKCX0KCWZvcihpPTA7aTxtO2krKykKCXsKCQlsb25nIGxvbmcgaW50IGxhc3RfY29sPW47CgkJZm9yKGo9bi0xO2o+PTA7ai0tKQoJCXsKCQkJaWYodGFibGVbaV1bal09PTApCgkJCXsKCQkJCXByb3dbaV1bal09ajsKCQkJCWxhc3RfY29sPWo7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQlwcm93W2ldW2pdPWxhc3RfY29sOwoJCQl9CgkJfQoJfQoKCglmb3Ioaj0wO2o8bjtqKyspCgl7CgkJbG9uZyBsb25nIGludCBsYXN0X2NvbD1tOwoJCWZvcihpPW0tMTtpPj0wO2ktLSkKCQl7CgkJCWlmKHRhYmxlW2ldW2pdPT0wKQoJCQl7CgkJCQlwY29sW2ldW2pdPWk7CgkJCQlsYXN0X2NvbD1pOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJcGNvbFtpXVtqXT1sYXN0X2NvbDsKCQkJfQoJCX0KCX0KICAvKglmb3IoaT0wO2k8bTtpKyspCgl7CgkJZm9yKGo9MDtqPG47aisrKQoJCXsKCQkJY291dDw8cHJvd1tpXVtqXTw8IiAiOwoJCX0KCQljb3V0PDxlbmRsOwoJfQoJZm9yKGk9MDtpPG07aSsrKQoJewoJCWZvcihqPTA7ajxuO2orKykKCQl7CgkJCWNvdXQ8PHBjb2xbaV1bal08PCIgIjsKCQl9CgkJY291dDw8ZW5kbDsKCX0qLwoJbG9uZyBsb25nIGludCB4X21heD0tMTExMDAwOwoJZm9yKGk9MDtpPG07aSsrKQogICAgewogICAgICBqPTA7CiAgICAgIAogICAgIAogICAgICB3aGlsZShqPG4pCiAgICAgIHsKICAgICAgaWYodGFibGVbaV1bal09PTApCiAgICAgIHsKICAgICAgaisrOwogICAgICBjb250aW51ZTsKICAgICAgfQogICAgICAgIGw9cHJvd1tpXVtqXTsKICAgICAgICBsb25nIGxvbmcgaW50IHhfbWluPTEwMDAwMDA7CiAgICAgICAgZm9yKGs9ajtrPGw7aysrKQogICAgICAgIHsKICAgICAgICAJbz1wY29sW2ldW2tdOwogICAgICAgIAl4X21pbj1taW4oby1pLHhfbWluKTsKICAgICAgICB9CiAgICAgICAgeF9taW49bWluKHhfbWluLGwtaik7CiAgICAgICAgIHhfbWF4PW1heCh4X21pbix4X21heCk7CiAgICAgICAgIGorKzsKICAgICAgfQogICAgIAogICAgfQogICAgaWYoeF9tYXghPS0xMTEwMDApCiAgICBjb3V0PDx4X21heDw8ZW5kbDsKICAgIGVsc2UgCiAgICBjb3V0PDwwPDxlbmRsOwoJcmV0dXJuIDA7Cn0=