//#include<stdio.h>
//#include<string.h>
//#define size 1000
//
//int stack[size];
//int top=-1;
//
//void init()
//{
// top = -1;
//}
//
//int push(int data)
//{
// top++;
// stack[top]=data;
//}
//
//int pop()
//{
// return stack[top--];
//}
//
//int isempty()
//{
// if(top==-1)
// {
// return 1;
// }
// return 0;
//}
//
//int main()
//{
// int i, j, n, c, a, b, tmp=1, cnt=0;
//
// int arr[101][101]= {}, visited[101]= {};
//
// init();
//
// scanf("%d", &c);
//
// scanf("%d", &n);
//
// for(i=0; i<n; i++)
// {
// scanf("%d", &a);
// scanf("%d", &b);
// arr[a][b]=1;
// arr[b][a]=1;
//
// }
//
//
///*
// for(i=1; i<=c; i++)
// {
// for(j=1; j<=c; j++)
// {
// printf("%d ", arr[i][j]);
// }
// printf("\n");
// }
//*/
// visited[1]=1;
// for(;;)
// {
// for(i=1; i<=c; i++)
// {
// if(arr[tmp][i] && visited[i]==0)
// {
// push(tmp);
// visited[i]=1;
// //printf("%d ", i);
// tmp = i;
// cnt++;
// break;
// }
//
// if(i==c)
// {
// tmp=pop();
// }
// }
// if(isempty()) break;
//
// }
// printf("%d", cnt);
//
//
//
// return 0;
//
//}
//
#include<stdio.h>
int a[9][9]={}, i, j, cnt, part,c;
void dfs(int y, int x, int color)
{
if(a[y][x] == color)
{
part++;
a[y][x] = -1;
dfs(y - 1, x, color);
dfs(y, x - 1, color);
dfs(y, x + 1, color);
dfs(y + 1, x, color);
}
}
int main()
{
for(i = 1; i <= 7; i++)
for(j = 1; j <= 7; j++)
scanf("%d", &a[i][j]);
for(i = 1; i <= 7; i++)
for(j = 1; j <= 7; j++)
if (a[i][j] != -1)
{
part = 0;
dfs(i, j, a[i][j]);
if (part >= 3)
cnt++;
}
printf("%d", cnt);
return 0;
}