#include <stdio.h>
const int MAXN = 10;
const int dir[4][2] = { {-1, 0}, {1, 0}, {0, -1}, {0, 1} };
int map[MAXN][MAXN];
int have[1000100],d[6];
int total;
void dfs(int x, int y, int step)
{
if(step == 6)
{
int num=0;
for(int k=0;k<6;k++)
{
num=num*10;
num=num+d[k];
}
if(!have[num])
{
//cout << cur << endl;
have[num] = 1, total++;
}
return ;
}
for(int i = 0; i < 4; i++)
{
d[step]=map[x][y];
int tx = x + dir[i][0];
int ty = y + dir[i][1];
if(tx >= 0 && tx < 5 && ty >= 0 && ty < 5)
{
//visit[tx][ty] = true;
dfs(tx, ty, step + 1);
//visit[tx][ty] = false;
}
}
}
int main()
{
//freopen("aa.in", "r", stdin);
//freopen("bb.out", "w", stdout);
total = 0;
for(int i = 0; i < 5; ++i)
{
for(int j = 0; j < 5; ++j)
{
scanf("%d",&map[i][j]);
}
}
for(int i = 0; i < 5; ++i)
{
for(int j = 0; j < 5; ++j)
{
dfs(i, j, 0);
}
}
printf("%d\n",total);
return 0;
}