#include<bits/stdc++.h>
using namespace std;
int main()
{
int n, m;
int arr[103][103] = { 0 };
int sum[103][103] = { 0 };
cin >> n >> m;
for (int i = 1;i <= n;++i)
for (int j = 1;j <= m;++j)
{
cin >> arr[i][j];
//计算前缀和
sum[i][j] = sum[i - 1][j] + sum[i][j - 1] - sum[i - 1][j - 1] + arr[i][j];
}
//二分搜索
int l = 1, r = min(m, n);
int ans = 0;
while (l <= r)
{
int k = (l + r) / 2;
int k2 = k * k;
for (int i = 1;i <= n - k;++i)
{
for (int j = 1;j <= m - k;++j)
if (sum[i + k][j + k] - sum[i][j + k] - sum[i + k][j] + sum[i][j] == k2)
{
ans = k;
l = k + 1;
break;
}
if (ans == k)
break;
}
if (ans != k)
r = k - 1;
}
cout << ans << endl;
return 0;
}