//简单的bfs 练习一下
int x;
int y;
Node()
{
x=0;
y=0;
}
};
queue<Node>que;
int check(int xx,int yy)
{
if(xx<1 || yy<1 || xx>N || yy>N) return 0;
if(map[xx][yy]==0) return 0;
else return 1;
}
void bfs(int i,int j)
{
Node n;
n.x=i;
n.y=j;
que.push(n);
vis[n.x][n.y]=1;
map[n.x][n.y]=0;
while(!que.empty())
{
Node t=que.front();
vis[t.x][t.y]=1;
map[t.x][t.y]=0;
que.pop();
for(int i=0;i<4;i++)
{
int xx=t.x+x[i];
int yy=t.y+y[i];
if(check(xx,yy)==0 || vis[xx][yy]==1)
{
continue;
}
else
{
Node nt;
nt.x=xx;
nt.y=yy;
vis[nt.x][nt.y]=1;
map[nt.x][nt.y]=0;
que.push(nt);
}
}
}
}
int main()
{
freopen("qqbn.in","r",stdin);
int s=0;
memset(vis,0,sizeof(vis));
memset(map,0,sizeof(map));
cin>>N;
for(int i=1;i<=N;i++)
{
getchar();
for(int j=1;j<=N;j++)
{
char c=getchar();
if(c=='.')
{
map[i][j]=0;
}
else
{
map[i][j]=1;
}
}
}
for(int i=1;i<=N;i++)
{
for(int j=1;j<=N;j++)
{
if(map[i][j]==1)
{
bfs(i,j);
s++;
}
else
{
continue;
}
}
}
cout<<s<<endl;
return 0;
}