#includeconst 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; }