#include<bits/stdc++.h>
using namespace std;
char mp[1010][1010];
bool flag;
int n;
int ans2;
int ans1;
int d[4][2] = { {1,0},{0,1},{-1,0},{0,-1} };
bool check(int x, int y) {
if (mp[x][y] == '.') return false;
if (x < 0 || x >= n || y < 0 || y >= n) return false;
return true;
}
void DFS(int x,int y) {
int ans = 0;
if (!flag) {
for (int i = 0; i < 4; i++) {
int x1 = x + d[i][0];
int y1 = y + d[i][1];
if (check(x1, y1)) {
ans++;
}
}
}
if (ans == 4) {
ans2++;
flag = true;
}
mp[x][y] = '*';
for (int i = 0; i < 4; i++) {
int x1 = x + d[i][0];
int y1 = y + d[i][1];
if (check(x1, y1) && mp[x1][y1] != '*') {
DFS(x1, y1);
}
}
}
int main() {
int i, j;
cin >> n;
ans2 = 0;
ans1 = 0;
for (i = 0; i < n; i++) {
cin >> mp[i];
}
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
if (mp[i][j] == '#') {
ans1++;
DFS(i,j);
flag = false;
}
}
}
cout << ans1-ans2;
}