#include <bits/stdc++.h>
using namespace std;
char S[22][22];
int C[22][22];
void dfs(int x, int y) {
  cout << x << y << endl;
  if (C[y + 1][x] < C[y + 1][x + 1] && S[y + 1][x] == '.') {
    C[y + 1][x + 1] = C[y + 1][x] + 1;
  }
  if (C[y + 1][x + 2] < C[y + 1][x + 1] && S[y + 1][x + 2] == '.') {
    C[y + 1][x + 1] = C[y + 1][x + 2] + 1;
  }
  if (C[y][x + 1] < C[y + 1][x + 1] && S[y][x + 1] == '.') {
    C[y + 1][x + 1] = C[y][x + 1] + 1;
  }
  if (C[y + 2][x + 1] < C[y + 1][x + 1] && S[y + 2][x + 1] == '.') {
    C[y + 1][x + 1] = C[y + 2][x + 1] + 1;
  }
  if (C[y + 1][x] > C[y + 1][x + 1] && S[y + 1][x] == '.') {
    dfs(x - 1, y);
  }
  if (C[y + 1][x + 2] > C[y + 1][x + 1] && S[y + 1][x + 2] == '.') {
    dfs(x + 1, y);
  }
  if (C[y][x + 1] > C[y + 1][x + 1] && S[y][x + 1] == '.') {
    dfs(x, y - 1);
  }
  if (C[y + 2][x + 1] > C[y + 1][x + 1] && S[y + 2][x + 1] == '.') {
    dfs(x, y + 1);
  }
  return;
}
int main() {
  int H, W;
  cin >> H >> W;
  for (int i = 0; i < H + 2; i++) {
    S[i][0] = '#';
    S[i][W + 1] = '#';
  }
  for (int i = 0; i < W + 2; i++) {
    S[0][i] = '#';
    S[H + 1][i] = '#';
  }
  for (int i = 0; i < H; i++) {
    for (int j = 0; j < W; j++) {
      cin >> S[i + 1][j + 1];
    }
  }
  int ans = 0;
  for (int i = 0; i < H; i++) {
    for (int j = 0; j < W; j++) {
      if (S[i + 1][j + 1] == '.') {
        for (int s = 0; s < H + 2; s++) {
          for (int t = 0; t < W + 2; t++) {
            C[s + 1][t + 1] = 100000;
          }
        }
        C[i + 1][j + 1] = 0;
        dfs(i, j);
        for (int s = 0; s < H; s++) {
          for (int t = 0; t < W; t++) {
            cout << C[s + 1][t + 1];
            if (C[s + 1][t + 1] != 100000 && ans < C[s + 1][t + 1]) {
              ans = C[s + 1][t + 1];
            }
          }
          cout << endl;
        }
        cout << endl;
      } else
        continue;
    }
  }
  cout << ans;
}
