#include <bits/stdc++.h>
using namespace std;
const int N = 110;
int n, m, a[N][N];
bool check1(int x, int y, int k){
for(int i = 1; i <= k; i++){
for(int j = 1; j <= k; j++){
if((i == j && a[x + i - 1][y + j - 1] != 1) || (i != j && a[x + i - 1][y + j - 1] != 0)){
return false;
}
}
}
return true;
}
bool check2(int x, int y, int k){
for(int i = 1; i <= k; i++){
for(int j = 1; j <= k; j++){
if((i + j == k - 1 && a[x + i - 1][y + j - 1] != 1) || (i + j != k - 1 && a[x + i - 1][y + j - 1] != 0)){
return false;
}
}
}
return true;
}
int main(){
cin >> n >> m;
for(int i = 1; i <= n; i++){
for(int j = 1; j <= m; j++){
cin >> a[i][j];
}
}
for(int k = min(n, m); k >= 1; k--){
for(int i = 1; i + k - 1 <= n; i++){
for(int j = 1; j + k - 1 <= m; j++){
if(check1(i, j, k) || check2(i, j, k)){
cout << k;
return 0;
}
}
}
}
cout << 0;
return 0;
}