#include <bits/stdc++.h>
using namespace std;
char f[51][51] = {0};
char tmp[51][51] = {0};
int dx[] = {-1, 0, 1, 0};
int dy[] = {0, 1, 0, -1};
int n, m;
int cnt(int x, int y) {
  int c = 0;
  for (int i = 0; i < 4; i++) {
    int nx = x + dx[i];
    int ny = y + dy[i];
    if (nx >= 0 && nx < n && ny >= 0 && ny < m) {
      if (f[nx][ny] == '#') c++;
    }
  }
  return c;
}
void cpy() {
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
      tmp[i][j] = f[i][j];
    }
  }
}
void toMark(int x, int y, int mr) {
  for (int i = 0; i < 4; i++) {
    int nx = x + dx[i];
    int ny = y + dy[i];
    if (nx >= 0 && nx < n && ny >= 0 && ny < m) {
      if (tmp[nx][ny] == '#') {
        tmp[nx][ny] = mr;
        toMark(nx, ny, mr);
      }
    }
  }
}
int cntcmp() {
  int r = 0;
  cpy();
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
      if (tmp[i][j] == '#') {
        tmp[i][j] = r;
        toMark(i, j, r);
        r++;
      }
    }
  }
  return r;
}
int main() {
  cin >> n >> m;
  getchar();
  for (int i = 0; i < n; i++) {
    scanf("%s", f[i]);
  }
  int t = 0;
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
      if (f[i][j] == '#') t++;
    }
  }
  if (t <= 2) {
    printf("-1");
    return 0;
  }
  if (t == 2) {
    printf("1");
    return 0;
  }
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
      if (f[i][j] == '#') {
        f[i][j] = '.';
        int k = cntcmp();
        if (k >= 2) {
          printf("1");
          return 0;
        }
        f[i][j] = '#';
      }
    }
  }
  printf("2");
  return 0;
}
