#include<bits/stdc++.h>
using namespace std;
int n,m,a[2501][2501],ans,fa[2501][2501],fb[2501][2501];
int main()
{
cin>>n>>m;
for(int i=1;i<=n;++i)
for(int j=1;j<=m;++j) cin>>a[i][j];
memset(fa,0x7fff,sizeof(fa));
memset(fb,0x7fff,sizeof(fb));
for(int i=1;i<=n;++i)
if(a[i][1]==1) fa[i][1]=1;
for(int i=1;i<=m;++i)
if(a[1][i]==1) fa[1][i]=fb[1][i]=1;
for(int i=1;i<=n;++i)
if(a[i][m]==1) fb[i][m]=1;
for(int i=2;i<=n;++i)
for(int j=2;j<=m;++j)
if(a[i][j]==1)
{
int ka,kb;
for(ka=i-1;ka>=1;--ka)
if(a[ka][j]==1) break;
for(kb=j-1;kb>=1;--kb)
if(a[i][kb]==1) break;
fa[i][j]=min(fa[i-1][j-1],min(i-ka-1,j-kb-1))+1;
}
for(int i=2;i<=n;++i)
for(int j=m-1;j>=1;--j)
if(a[i][j]==1)
{
int ka,kb;
for(ka=i-1;ka>=1;--ka)
if(a[ka][j]==1) break;
for(kb=j+1;kb<=m;++kb)
if(a[i][kb]==1) break;
fb[i][j]=min(fb[i-1][j+1],min(i-ka-1,kb-j-1))+1;
}
for(int i=1;i<=n;++i)
for(int j=1;j<=m;++j)
if(fa[i][j]!=0x7fff) ans=max(ans,fa[i][j]);
for(int i=1;i<=n;++i)
for(int j=1;j<=m;++j)
if(fb[i][j]!=0x7fff) ans=max(ans,fb[i][j]);
cout<<ans<<endl;
return 0;
}
WA 2和6两个点