#include <bits/stdc++.h>
#include <unistd.h>
using namespace std;
typedef long long ll;
typedef double db;
typedef long double ldb;
const ll MAXN=105;
ll n,m,a[MAXN][MAXN],dp[MAXN][MAXN];
int main() {
cin>>n>>m;
for(ll i=1;i<=n;++i){
for(ll j=1;j<=n;++j){
cin>>a[i][j];
}
}
for(ll i=1;i<=n;++i){
for(ll j=1;j<=m;++j){
if(!a[i][j])continue;
dp[i][j]=min(dp[i-1][j],min(dp[i][j-1],dp[i-1][j-1]))+1;
}
}
ll ans=0;
for(ll i=1;i<=n;++i){
for(ll j=1;j<=m;++j){
ans=max(ans,dp[i][j]);
}
}
cout<<ans<<endl;
return 0;
}