#include <bits/stdc++.h>
using namespace std;
int dp[60][60][60][60], sum[60][60];
char s[60][60];
int f(int a, int b, int c, int d) {
  return sum[c][d] + sum[a - 1][b - 1] - sum[a - 1][d] - sum[c][b - 1];
}
int main() {
  int i, j, k, l, a, n, mi;
  cin >> n;
  for (i = 1; i <= n; i++) scanf("%s", s[i] + 1);
  for (i = 1; i <= n; i++) {
    for (j = 1; j <= n; j++) {
      sum[i][j] = sum[i - 1][j] + sum[i][j - 1] - sum[i - 1][j - 1];
      if (s[i][j] == '#') sum[i][j]++;
    }
  }
  for (i = 1; i <= n; i++) {
    for (j = 1; j <= n; j++) {
      for (k = i; k; k--) {
        for (l = j; l; l--) {
          if (f(k, l, i, j) == 0) continue;
          mi = 1e9;
          for (a = k; a < i; a++)
            mi = min(mi, dp[i][j][a + 1][l] + dp[a][j][k][l]);
          for (a = l; a < j; a++)
            mi = min(mi, dp[i][j][k][a + 1] + dp[i][a][k][l]);
          if (i - k == j - l) mi = min(mi, i - k + 1);
          dp[i][j][k][l] = mi;
        }
      }
    }
  }
  cout << dp[n][n][1][1] << endl;
}
