#include <iostream>
#include <fstream>
using namespace std;
ifstream f("data.in");
int n,m,ma[505][505],maxi,viz[505][505];
void up(int i,int j,int dis,int dis2,int dis3)
{
	viz[i][j]=1;
	if(ma[i-1][j]==1)
		up(i-1,j,dis,dis2,dis3+1);
	if(maxi<dis+dis2+dis3)
	
		maxi=dis+dis2+dis3;
	/*{
		int x,y;
		y=j;
		for(x=i;x<=x+dis3;x++)
			viz[x][y]=1;
		while(y>=y-dis2)
		{
			y--;
			viz[x][y]=1;
		}
		while(x>=x-dis)
		{
			x--;
			viz[x][y]=1;
		}
		
	}*/
}
void right(int i,int j,int dis,int dis2)
{
	viz[i][j]=1;
	if(ma[i][j+1]==1)
		right(i,j+1,dis,dis2+1);
	if(ma[i-1][j]==1 /*&& dis2!=1*/)
		up(i-1,j,dis,dis2,1);
}
void down(int i,int j,int dis)
{
	viz[i][j]=1;
	if(ma[i+1][j]==1)
		down(i+1,j,dis+1);
	if(ma[i][j+1]==1 && dis!=1)
		right(i,j+1,dis,1);
}
int main()
{	
	maxi=0;
	string aux;
	cin>>n>>m;
	int i,j;
	for(i=1;i<=n;i++)
	{
		cin>>aux;
		
		for(j=m;j>0;j--)
			{
				ma[i][j]=(int)aux[j-1]-48;
				//aux=aux/10;
				//cout<<ma[i][j]<<" ";
		}//cout<<"\n";
	}
	for(i=1;i<=n;i++)
		for(j=1;j<=m;j++)
			if(ma[i][j]==1 && viz[i][j]==0)
				down(i,j,1);
	cout<<maxi;
}