#include<bits/stdc++.h>
using namespace std;
int f[100][100];
int a[100][100];
int main()
{
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++) cin>>a[i][j];
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(a[i][j]==0)
{
f[i][j]=0;
continue;
}
if(i==1&&j==1) f[i][j]=1;
else if(f[i-1][j]==f[i][j-1])
{
if(a[i-f[i-1][j]][i-f[i-1][j]]==0) f[i][j]=f[i-1][j];
else f[i][j]= f[i-1][j]+1;
}
else f[i][j]=min(f[i-1][j],f[i][j-1])+1;
// cout<<a[i][j]<<" ";//测试
}
// cout<<endl;//测试
}
int Max=0;
for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) Max=max(Max,f[i][j]);
cout<<Max;
return 0;
}