#include <bits/stdc++.h>
#define N 2005
using namespace std;
int n, m, ans;
int ma[N][N], u[N][N], l[N][N], r[N][N];
void left(){
for(int i = 1; i <= n; i++){
for(int j = 2; j <= m; j++){
if(ma[i][j - 1] == 1) l[i][j] = l[i][j - 1];
}
}
}
void right(){
for(int i = 1; i <= n; i++){
for(int j = m; j > 1; j--){
if(ma[i][j] == 1) r[i][j - 1] = r[i][j];
}
}
}
void solve(){
for(int i = 1; i <= n; i++){
for(int j = 1; j <= m; j++){
if(i > 1 && ma[i - 1][j] == 1){
u[i][j] = u[i - 1][j] + 1;
l[i][j] = max(l[i][j], l[i - 1][j]);
r[i][j] = min(r[i][j], r[i - 1][j]);
}
int a = r[i][j] - l[i][j] + 1;
int b = min(a, u[i][j]);
ans = max(ans, b);
}
}
}
signed main(){
scanf("%d%d", &n, &m);
for(int i = 1; i <= n; i++){
for(int j = 1; j <= m; j++){
scanf("%d", &ma[i][j]);
u[i][j] = 1;
l[i][j] = j;
r[i][j] = j;
}
}
left();
right();
solve();
printf("%d", ans);
return 0;
}