/*
#include<stdio.h>
int arr[50001],brr[50001];
int bs(int s,int e,int k)
{
int mid=(s+e)/2;
if(s>e) return -1;
if(k==arr[mid])
{
return mid-1;
}
else if(k>arr[mid])
{
bs(mid+1,e,k);
}
else if(k<arr[mid])
{
bs(1,mid-1,k);
}
}
void swap(int a, int b)
{
int t=arr[a];
arr[a]=arr[b];
arr[b]=t;
}
void quick_sort(int start, int end)
{
int pivot=start, low=start, high=end+1;
if(start>=end) return ;
do
{
do
{
low++;
}while(arr[pivot]>arr[low]);
do
{
high--;
}while(arr[pivot]<arr[high]);
if(low<high) swap(low,high);
}while(low<high);
swap(high,pivot);
quick_sort(start,high-1);
quick_sort(high+1,end);
}
int main()
{
int n,i;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&arr[i]);
brr[i]=arr[i];
}
quick_sort(1,n);
for(i=1;i<=n;i++)
{
printf("%d ",bs(1,n,brr[i]));
}
}
*/
/*
#include<stdio.h>
int map[101][101]= {}, visited[101]= {};
int computer,num=0,pair;
void dfs(int node)
{
int i;
for(i=1; i<=computer; i++)
{
if(map[node][i]==1 && visited[i]==0)
{
visited[i]=1;
dfs(i);
}
}
}
int main()
{
int i,a,b;
scanf("%d %d",&computer,&pair);
for(i=1; i<=pair; i++)
{
scanf("%d %d",&a,&b);
map[a][b]=map[b][a]=1;
}
dfs(1);
for(i=2; i<=computer; i++)
{
num+=visited[i];
}
printf("%d",num);
}
*/
#include<stdio.h>
int map[101][101]= {}, visited[101]= {};
int n,cnt=0,area[700]={};
void dfs(int x, int y)
{
if(x<1||x>n||y<1||y>n)
{
return;
}
area[cnt]++;
map[x][y]=-1;
if(map[x-1][y]==1)
{
dfs(x-1,y);
}
if(map[x+1][y]==1)
{
dfs(x+1,y);
}
if(map[x][y+1]==1)
{
dfs(x,y+1);
}
if(map[x][y-1]==1)
{
dfs(x,y-1);
}
}
int main()
{
int i,j;
scanf("%d",&n);
for(i=1; i<=n; i++)
{
for(j=1; j<=n; j++)
{
scanf("%1d",&map[i][j]);
}
}
for(i=1; i<=n; i++)
{
for(j=1; j<=n; j++)
{
if(map[i][j]==1)
{
cnt++;
dfs(i,j);
}
}
}
printf("%d",cnt);
}