#include <bits/stdc++.h>

using namespace std;

int n,m,t,res;
char M[1005][1005];
queue <int> Qx, Qy;
int dx[4] = {-1, 0, 1, 0};
int dy[4] = {0, 1, 0, -1};

void bfs(int x, int y){

    Qx.push(x);
    Qy.push(y);
    t=1;
    M[x][y] = '$';

    while(Qx.size()){

        int q = Qx.front();
        int r = Qy.front();

        for(int i=0; i<4; i++){

            if(M[q+dx[i]][r+dy[i]] == '.'){
                Qx.push(q+dx[i]);
                Qy.push(r+dy[i]);

                M[q+dx[i]][r+dy[i]] = '$';
                t++;
            }

        }

        Qx.pop();
        Qy.pop();
    }

    res = max(t,res);
    t=0;
}

int main(){

    //freopen("tp.txt", "r", stdin);

    scanf("%d%d", &n,&m);
    for(int i=1; i<=n; i++){
        for(int j=1; j<=m; j++){
            cin >> M[i][j];
        }
    }

    for(int i=1; i<=n; i++){
        for(int j=1; j<=m; j++){
            if(M[i][j] == '.'){
                bfs(i,j);
            }
        }
    }

    cout << res << endl;

 return 0;
}