#include <bits/stdc++.h>

using namespace std;

struct stuff
{
    int top;
};
int main()
{
    int n, m;
    char a[505][505];
    stuff dp[505][505];
    cin >> n >> m;

    for (int i = 1; i <= n; ++i)
        for (int j = 1; j <= m; ++j)
            cin >> a[i][j];

    int max_global = 0;
    for (int i = 1; i <= n; ++i)
    {
        for (int j = m; j >= 1; --j)
        {
            if (a[i][j] == '0')
            {
                dp[i][j].top = 0;
            }
            else
            {
                dp[i][j].top = dp[i-1][j].top + 1;

                if (dp[i][j].top > 1)
                {
                    int max_u = 0;
                    for (int k = j + 1; k <= m; ++k)
                    {
                        if (a[i][k] == '0') break;
                        if (dp[i][k].top > 1) max_u = max(max_u, dp[i][j].top + k - j + 1 + dp[i][k].top - 2);
                    }
                    max_global = max(max_u, max_global);
                }
            }
        }
    }
    cout << max_global << '\n';


    return 0;
}