#include <bits/stdc++.h>
using namespace std;
int main() {
  int H, W;
  int l = 0;
  int endF;
  int ans = 0;
  cin >> H >> W;
  H += 2;
  W += 2;
  char S[W * H];
  char copyS[W * H];
  for (int i = 0; i < W; i++) {
    S[i] = '#';
  }
  for (int j = 1; j < H - 1; j++) {
    S[W * j] = '#';
    for (int i = 1; i < W - 1; i++) {
      cin >> S[W * j + i];
    }
    S[W * (j + 1) - 1] = '#';
  }
  for (int i = 0; i < W; i++) {
    S[W * (H - 1) + i] = '#';
  }
  for (int i = 0; i < W * H; i++) {
    for (int j = 0; j < W * H; j++) {
      copyS[j] = S[j];
    }
    if (copyS[i] == '.') {
      copyS[i] = 'S';
      l = 0;
      endF = 0;
      while (endF != 1) {
        endF = 1;
        for (int j = 0; j < W * H; j++) {
          if (copyS[j] == 'N') {
            copyS[j] = 'S';
          }
        }
        for (int j = 0; j < W * H; j++) {
          if (copyS[j] == 'S') {
            if (copyS[j - W] == '.') {
              copyS[j - W] = 'N';
            }
            if (copyS[j - 1] == '.') {
              copyS[j - 1] = 'N';
            }
            if (copyS[j + 1] == '.') {
              copyS[j + 1] = 'N';
            }
            if (copyS[j + W] == '.') {
              copyS[j + W] = 'N';
            }
            copyS[j] = '#';
            l--;
            endF = 0;
          }
        }
        if (endF != 1) {
          l++;
        }
      }
      if (ans < l) {
        ans = l;
      }
    }
  }
  cout << ans << endl;
  return 0;
}
