#include <cstdio>
#include <queue>
using namespace std;
int n,m;
long long zbr;
char a[1007][1007];
queue <int> qx;
queue <int> qy;
int bfs ()
{
int x,y;
while (!qx.empty()){
x=qx.front(); y=qy.front();
a[x][y]='0';
if (a[x-1][y]=='.') { qx.push (x-1); qy.push (y); a[x-1][y]='0';}
if (a[x][y+1]=='.') { qx.push (x); qy.push (y+1); a[x][y+1]='0';}
if (a[x+1][y]=='.') { qx.push (x+1); qy.push (y); a[x+1][y]='0';}
if (a[x][y-1]=='.') { qx.push (x); qy.push (y-1); a[x][y-1]='0';}
zbr++;
qx.pop();qy.pop();
}
}
int main ()
{
scanf ("%d%d",&n,&m);
for (int i=0;i<n;i++){
scanf ("%s",a[i]);
}
int x,y;
long long max=0;
for (int i=0;i<n;i++){
for (int j=0;j<m;j++){
if (a[i][j]=='.'){
qx.push (i); qy.push (j);
bfs();
if (zbr>max) max=zbr;
zbr=0;
}
}
}
printf ("%I64lld",max);
}