#include <iostream>
#include <vector>
#include <bitset>
#include <string>
#define NM 505

using namespace std;

vector<bitset<NM>> v(NM);
int d[NM][NM], r[NM][NM], u[NM][NM];
int n, m;

int main()
{
    cin >> n >> m;

    string s;
    getline(cin, s);
    for(int i = 1; i <= n; ++i)
    {
        getline(cin, s);
        for(int j = 0; j < m; ++j)
            v[i][j+1] = s[j]-'0';
    }
    for(int i = 1; i <= n; ++i)
        for(int j = 1; j <= m; ++j)
            if(v[i][j] == 1)
            {
                d[i][j] = d[i-1][j]+1;
                if(d[i][j-1] || r[i][j-1])
                    r[i][j] = max(d[i][j-1], r[i][j-1])+1;

            }
    int mx = 0;
    for(int i = n; i; --i)
        for(int j = m; j; --j)
            if(v[i][j] == 1)
            {
                if(r[i+1][j] || u[i+1][j])
                    u[i][j] = max(r[i+1][j], u[i+1][j])+1;
                mx = max(mx, u[i][j]);
            }
    cout << mx;
}