/*
*/
#include <stdio.h>
int n,v=0,z,a=0,t,b=1,m,c=2;
int arr[101][101]={};
int queue[2][101]={};
int front=-1;
int back=-1;
int danji[500]={};
int px, py;
void bfs(int x, int y)
{
push(x,y);
arr[x][y]=0;
while(front != back)
{
pop();
if(arr[px][py+1]==1) push(px,py+1);
if(arr[px+1][py]==1) push(px+1,py);
if(arr[px][py-1]==1) push(px,py-1);
if(arr[px-1][py]==1) push(px-1,py);
}
}
void push(int x,int y)
{
back++;
queue[0][back] = x;
queue[1][back] = y;
}
void pop()
{//원상복구는 ㅎ힘들다.
if(front==back)
{//원상복구 : ///// /
px = 5;
py = 1;
return ;
}
front++;
}
int main()
{
scanf("%d",&n);
for(int i=1; i<=n; i++)
{
for(int j=1; j<=n; j++)
{
scanf("%1d",&arr[i][j]);
}
}
//for(int i=1; i<=n; i++)
//{
//for(int j=1; j<=n; j++)
//{
//printf("%d",arr[i][j]);
//}
//printf("\n");
for(int i=1; i<=n; i++)
{
for(int j=1; j<=n; j++)
{
if(arr[i][j]==1)
{
bfs(i,j);
a++;
}
}
}
printf("%d ",a);
/*for(int i=1; i<a; i++)
{
for(int j=1; j<=a-i; j++)
{
if(danji[j] > danji[j+1])
{
t=danji[j];
danji[j]=danji[j+1];
danji[j+1]=t;
}
}
}*/
///printf("%d\n",a);
//for(int i=1; i<=a; i++)
//{
//printf("%d\n",danji[i]);
//}
return 0;
}