#include <bits/stdc++.h>
using namespace std;
const int maxn = 55;
char ch[maxn][maxn];
int dp[maxn][maxn][maxn][maxn], sum[maxn][maxn];
int main() {
  int n;
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) scanf("%s", ch[i] + 1);
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= n; j++) {
      sum[i][j] =
          sum[i - 1][j] + sum[i][j - 1] - sum[i - 1][j - 1] + (ch[i][j] == '#');
    }
  }
  for (int i = 1; i <= n; i++) {
    for (int k = 1; k <= n; k++) {
      for (int j = 1; j + i - 1 <= n; j++) {
        for (int l = 1; l + k - 1 <= n; l++) {
          if (sum[j + i - 1][l + k - 1] - sum[j + i - 1][l - 1] -
                  sum[j - 1][l + k - 1] + sum[j - 1][l - 1] !=
              0)
            dp[j][l][j + i - 1][l + k - 1] = max(i, k);
          for (int m = j; m < j + i - 1; m++)
            dp[j][l][j + i - 1][l + k - 1] = min(
                dp[j][l][j + i - 1][l + k - 1],
                dp[j][l][m][l + k - 1] + dp[m + 1][l][j + i - 1][l + k - 1]);
          for (int m = l; m < l + k - 1; m++)
            dp[j][l][j + i - 1][l + k - 1] = min(
                dp[j][l][j + i - 1][l + k - 1],
                dp[j][l][j + i - 1][m] + dp[j][m + 1][j + i - 1][l + k - 1]);
        }
      }
    }
  }
  printf("%d\n", dp[1][1][n][n]);
  return 0;
}
