/*
#include<stdio.h>
int arr[101][101]= {},a[101]= {},n;
void dfs(int node)
{
for(int i=1; i<=n; i++)
{
if(arr[node][i]==1 && a[i]==0)
{
a[i]=1;
dfs(i);
}
}
}
int main()
{
int b,c=0,x,y,i;
scanf("%d %d",&n,&b);
for(i=1;i<=b;i++)
{
scanf("%d %d",&x,&y);
arr[x][y]=arr[y][x]=1;
}
dfs(1);
for(i=2; i<=n; i++)
{
c+=a[i];
}
printf("%d",c);
}
#include<stdio.h>
char str[101][101],c;
void dfs(int i,int j)
{
if(str[i][j]!='L') return ;
str[i][j]='.';
dfs(i-1,j);
dfs(i,j-1);
dfs(i+1,j);
dfs(i,j+1);
dfs(i-1,j-1);
dfs(i+1,j-1);
dfs(i+1,j+1);
dfs(i-1,j+1);
}
int main()
{
int w,i,j,h,cnt=0;
scanf("%d %d",&w,&h);
for(i=1; i<=h; i++)
{
for(j=1; j<=w; j++)
{
scanf(" %c",&str[i][j]);
}
}
for(i=1; i<=h; i++)
{
for(j=1; j<=w; j++)
{
if(str[i][j]=='L')
{
cnt++;
dfs(i,j);
}
}
}
printf("%d",cnt);
}
*/
/*
#include<stdio.h>
int arr[101][101]= {},n,m,cnt=0;
int sd[10000]={};
void dfs(int i,int j)
{
if(i<0||j<0||j>=n||i>=m||arr[i][j]!=0) return ;
arr[i][j]=1;
sd[cnt]=cnt;
dfs(i-1,j);
dfs(i+1,j);
dfs(i,j-1);
dfs(i,j+1);
}
int main()
{
int k,i,j,a,b,c,d,cnt=0;
scanf("%d %d %d",&m,&n,&k);
while(k>0)
{
scanf("%d %d %d %d",&a,&b,&c,&d);
for(j=a; j<c; j++)
{
for(i=b; i<d; i++)
{
arr[i][j]=1;
}
}
k--;
}
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
if(arr[i][j]==0)
{
cnt++;
dfs(i,j);
}
// printf("%d ",arr[i][j]);
}
//printf("\n");
}
printf("%d\n",cnt);
for(i=1;i<=cnt;i++)
{
printf("%d ",sd[i]);
}
}
*/
#include<stdio.h>
int arr[101][101],n,cnt=0;
int sd[10000]= {};
void dfs(int i,int j)
{
if(i<1||j<1||i>n||j>n||arr[i][j]!=0) return ;
arr[i][j]=0;
// sd[cnt]=cnt;
dfs(i-1,j);
dfs(i+1,j);
dfs(i,j-1);
dfs(i,j+1);
}
int main()
{
int i,j,temp,cnt=0,a;
scanf("%d",&n);
for(i=1; i<=n; i++)
{
for(j=1; j<=n; j++)
{
scanf("%1d",&arr[i][j]);
}
}
for(i=1; i<=n; i++)
{
for(j=1; j<=n; j++)
{
if(arr[i][j]==1)
{
cnt++;
dfs(i,j);
}
}
}
printf("%d",cnt);
/*
for(i=1;i<n;i++)
{
for(j=1;j<=n-i;j++)
{
if(arr[j]>arr[j+1])
{
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
*/
}