from collections import deque
def in_bound(x, y, n):
return 0 <= x < n and 0 <= y < n
n = int(input())
maze = [list(input()) for _ in range(n)]
visited = [[False]*n for _ in range(n)]
dx = [-1, 0, 0, 1]
dy = [0, -1, 1, 0]
count = 0
for i in range(n):
for j in range(n):
if maze[i][j] == '#' and not visited[i][j]:
q = deque()
q.append((i, j))
visited[i][j] = True
safe = False # 是否存在一个安全点(四周无洪水)
while q:
x, y = q.popleft()
surrounded = True
for d in range(4):
nx, ny = x + dx[d], y + dy[d]
if in_bound(nx, ny, n):
if maze[nx][ny] == '.':
surrounded = False
elif maze[nx][ny] == '#' and not visited[nx][ny]:
visited[nx][ny] = True
q.append((nx, ny))
if surrounded:
safe = True # 找到了至少一个四周都是 # 的点
# 如果整个区域没有任何安全点,就说明它会被完全淹没
if not safe:
count += 1
print(count)