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)