#include <bits/stdc++.h>
using namespace std;
#define LL long long
#define LD long double
#define UG unsigned
int n;
int s[1005][1005];
bool f[1005][1005];
int dx[]={1,0,-1,0};
int dy[]={0,1,0,-1};
void dr()
{
memset(s,-1,sizeof(s));
cin>>n;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
char c;
cin>>c;
s[i][j]=(c=='.'?-1:0);
}
}
for(int x=1;x<=n;x++)
{
for(int y=1;y<=n;y++)
{
if(s[x][y]!=-1)
{
for(int k=0;k<4;k++)
{
int tx=x+dx[k];
int ty=y+dy[k];
if(s[tx][ty]==-1) s[x][y]=1;
}
}
}
}
}
bool bfs(int stx,int sty)
{
bool flag=true;
queue<pair<int,int>> q;
q.push(make_pair(stx,sty));
f[stx][sty]=true;
if(s[stx][sty]==1) return false;
while(!q.empty())
{
int x=q.front().first;
int y=q.front().second;
q.pop();
for(int k=0;k<4;k++)
{
int tx=x+dx[k];
int ty=y+dy[k];
if(s[tx][ty]!=-1&&!f[tx][ty])
{
if(s[tx][ty]==0) flag=false;
q.push(make_pair(tx,ty));
f[tx][ty]=true;
s[tx][ty]=-1;
}
}
}
return flag;
}
int main()
{
dr();
int ans=0;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(s[i][j]!=-1) ans+=int(bfs(i,j));
}
}
cout<<ans;
return 0;
}