#include <bits/stdc++.h>
using namespace std;
int n, m;
string s[1001];
bool vis[1001][1001];
void dfs(int x, int y) {
  vis[x][y] = true;
  if (x != n - 1 && !vis[x + 1][y] && s[x + 1][y] == '#') dfs(x + 1, y);
  if (x != 0 && !vis[x - 1][y] && s[x - 1][y] == '#') dfs(x - 1, y);
  if (y != m - 1 && !vis[x][y + 1] && s[x][y + 1] == '#') dfs(x, y + 1);
  if (y != 0 && !vis[x][y - 1] && s[x][y - 1] == '#') dfs(x, y - 1);
}
void solve() {
  cin >> n >> m;
  for (int i = 0; i < n; i++) cin >> s[i];
  bool fl = true;
  for (int i = 0; i < n; i++) {
    int t = 0, k = 0;
    for (int j = 0; j < m; j++) {
      if (s[i][j] == '#')
        k++;
      else if (k) {
        t++;
        k = 0;
      }
    }
    if (k) t++;
    if (t > 1) fl = false;
  }
  for (int i = 0; i < m; i++) {
    int t = 0, k = 0;
    for (int j = 0; j < n; j++) {
      if (s[j][i] == '#')
        k++;
      else if (k) {
        t++;
        k = 0;
      }
    }
    if (k) t++;
    if (t > 1) fl = false;
  }
  int mg[n][m];
  memset(mg, 0, sizeof(mg));
  char g[n][m];
  for (int i = 0; i < n; i++) {
    int k = 0;
    for (int j = 0; j < m; j++)
      if (s[i][j] == '#') k++;
    for (int j = 0; j < m; j++) mg[i][j] += k;
  }
  for (int i = 0; i < m; i++) {
    int k = 0;
    for (int j = 0; j < n; j++)
      if (s[j][i] == '#') k++;
    for (int j = 0; j < n; j++) mg[j][i] += k;
  }
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
      if (s[i][j] == '#' || mg[i][j] == 0)
        g[i][j] = 'S';
      else
        g[i][j] = '.';
    }
  }
  for (int i = 0; i < n; i++) {
    int sc = 0;
    for (int j = 0; j < m; j++)
      if (g[i][j] == 'S') sc++;
    if (!sc) fl = false;
  }
  for (int i = 0; i < m; i++) {
    int sc = 0;
    for (int j = 0; j < n; j++)
      if (g[j][i] == 'S') sc++;
    if (!sc) fl = false;
  }
  if (fl) {
    int ans = 0;
    for (int i = 0; i < n; i++) {
      for (int j = 0; j < m; j++) {
        if (s[i][j] == '#' && !vis[i][j]) {
          dfs(i, j);
          ans++;
        }
      }
    }
    cout << ans << endl;
  } else {
    cout << -1 << endl;
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int z;
  z = 1;
  for (int z1 = 1; z1 <= z; z1++) {
    solve();
  }
  return 0;
}
