#include<bits/stdc++.h>
using namespace std;
typedef long long L;
const int N = 5e4 + 5;
typedef pair<int, int> P;
int n, m;
L a[105][105];
bool v[105][105];
bool ask(int x1, int y1, int x2, int y2) {
L ans = 0;
L k = y2 - y1 + 1;
ans = a[x2][y2] - a[x1 - 1][y2] - a[x2][y1 - 1] + a[x1 - 1][y1 - 1];
if (ans == k * k) {
return true;
}
return 0;
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> n >> m;
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= m; ++j) {
cin >> a[i][j];
if (a[i][j] == 1) v[i][j] = 1;
a[i][j] += a[i - 1][j] + a[i][j - 1] - a[i - 1][j - 1];
}
}
int ans = 0;
for(int i = 1; i <= n; ++i)
for (int j = 1; j <= m; ++j) {
if (v[i][j]) {
for (int k = 1; i + k - 1 <= n && j + k - 1 <= n; ++k) {
if (ask(i, j, i + k - 1, j + k - 1)) ans = max(ans, k);
}
}
}
cout << ans;
}