#include <bits/stdc++.h>
using namespace std;
bool adj[50][50], was[50][50];
int n, m, cntv, sz;
void dfs(int x, int y) {
  ++sz;
  was[x][y] = true;
  if (x)
    if (adj[x - 1][y] && !was[x - 1][y]) dfs(x - 1, y);
  if (y)
    if (adj[x][y - 1] && !was[x][y - 1]) dfs(x, y - 1);
  if (x < n - 1)
    if (adj[x + 1][y] && !was[x + 1][y]) dfs(x + 1, y);
  if (y < m - 1)
    if (adj[x][y + 1] && !was[x][y + 1]) dfs(x, y + 1);
}
int main() {
  scanf("%d %d\n", &n, &m);
  for (int i = 0; i < n; ++i, getchar())
    for (int j = 0; j < m; ++j) cntv += adj[i][j] = getchar() != '.';
  if (cntv < 3) return !printf("-1");
  for (int i = 0; i < n; ++i)
    for (int j = 0; j < m; ++j) {
      if (!adj[i][j]) continue;
      sz = 1;
      for (int y = 0; y < n; ++y) memset(was + y, 0, m);
      adj[i][j] = false;
      if (i && adj[i - 1][j])
        dfs(i - 1, j);
      else if (j && adj[i][j - 1])
        dfs(i, j - 1);
      else if (i < n - 1 && adj[i + 1][j])
        dfs(i + 1, j);
      else
        dfs(i, j + 1);
      adj[i][j] = true;
      if (sz != cntv) return !printf("1");
    }
  printf("2");
  return 0;
}
