#include<iostream>
#include<stdio.h>
#include<queue>
#include<math.h>
using namespace std;
//说明:用一个一维数组表示魔方,一个队列储存白块位置。
queue<int>q1; //储存白块的队列
int s[25] ;
int ss[25];
int cont=0;
int sum1=1;
int z=1;
void input();//输入函数
int bfs(); //广搜
void turn(int n);//转动魔方
int sum();
int main()
{
input();
bfs();
return 0;
}
void input()//输入初始状态
{
int num[12];
int i,j;
for(i=0;i<25;i++)
{
s[i]=1;
}
for(i=0;i<12;i++)
{
cin>>num[i];
if(num[i] == 10)
{
q1.push(2*i+2);
}
if(num[i] == 1)
{
q1.push(2*i+1);
}
if(num[i] == 0)
{
q1.push(2*i+1);
q1.push(2*i+2);
}
}
}
int bfs()//每种情况有六种转动方法
{
int i,j;
int tmp1,tmp2,tmp3,tmp4;
while(!q1.empty())
{
for(i=0;i<25;i++)
{
s[i]=1;
}
tmp1=q1.front();
q1.pop();
tmp2=q1.front();
q1.pop();
tmp3=q1.front();
q1.pop();
tmp4=q1.front();
q1.pop();
s[tmp1]=0;
s[tmp2]=0;
s[tmp3]=0;
s[tmp4]=0;
cont++;
for(i=0;i<25;i++)
{
ss[i]=s[i];
}
for(i=0;i<6;i++)
{
if(sum() == 5)
{
while(sum1 < cont)
{
sum1 = sum1 + pow(6,z);
z++;
}
cout<<z<<endl;
return 0;
}
turn(i);
for(j=1;j<25;j++)
{
if(s[j] == 0)
{
q1.push(j);
}
}
}
}
return 0;
}
void turn(int n)//转动魔方的函数,有六种
{
int i,j;
if(n == 0)
{
for(i=1;i<25;i++)
{
s[i]=ss[i];
}
s[11]=ss[19];
s[12]=ss[20];
s[24]=ss[11];
s[23]=ss[12];
s[16]=ss[24];
s[15]=ss[23];
s[19]=ss[16];
s[20]=ss[15];
s[7]=ss[8];
s[5]=ss[7];
s[6]=ss[5];
s[8]=ss[6];
}
if(n == 1)
{
for(i=1;i<25;i++)
{
s[i]=ss[i];
}
s[19]=ss[11];
s[20]=ss[12];
s[11]=ss[24];
s[12]=ss[23];
s[24]=ss[16];
s[23]=ss[15];
s[16]=ss[19];
s[15]=ss[20];
s[8]=ss[7];
s[7]=ss[5];
s[5]=ss[6];
s[6]=ss[8];
}
if(n == 2)
{
for(i=1;i<25;i++)
{
s[i]=ss[i];
}
s[18]=ss[2];
s[20]=ss[4];
s[8]=ss[18];
s[6]=ss[20];
s[2]=ss[24];
s[4]=ss[22];
s[24]=ss[8];
s[22]=ss[6];
s[14]=ss[13];
s[16]=ss[14];
s[15]=ss[16];
s[13]=ss[15];
}
if(n == 3)
{
for(i=1;i<25;i++)
{
s[i]=ss[i];
}
s[2]=ss[18];
s[4]=ss[20];
s[18]=ss[8];
s[20]=ss[6];
s[24]=ss[2];
s[22]=ss[4];
s[8]=ss[24];
s[6]=ss[22];
s[13]=ss[14];
s[14]=ss[16];
s[16]=ss[15];
s[15]=ss[13];
}
if(n == 4)
{
for(i=1;i<25;i++)
{
s[i]=ss[i];
}
s[10]=ss[4];
s[8]=ss[12];
s[7]=ss[10];
s[14]=ss[8];
s[16]=ss[7];
s[3]=ss[14];
s[4]=ss[16];
s[12]=ss[3];
s[19]=ss[17];
s[20]=ss[19];
s[18]=ss[20];
s[17]=ss[18];
}
if(n == 5)
{
for(i=1;i<25;i++)
{
s[i]=ss[i];
}
s[3]=ss[12];
s[4]=ss[10];
s[12]=ss[8];
s[10]=ss[7];
s[8]=ss[14];
s[7]=ss[16];
s[14]=ss[3];
s[16]=ss[4];
s[17]=ss[19];
s[19]=ss[20];
s[20]=ss[18];
s[18]=ss[17];
}
}
int sum()//求出一共转了几次
{
int n = 0;
n=s[1]*s[2]*s[3]*s[4]+
s[5]*s[6]*s[7]*s[8]+
s[9]*s[10]*s[11]*s[12]+
s[13]*s[14]*s[15]*s[16]+
s[17]*s[18]*s[19]*s[20]+
s[21]*s[22]*s[23]*s[24];
return (n);
}