var
a,a1,b,b1,c,c1,d,d1,a2,a3,b2,b3,c2,c3,d2,d3:integer;
queue:array[0..50000,1..8] of longint;
bu:array[1..50000] of longint;
dui1,dui2:array[1..8] of integer;
head,tail,i,j,k:longint; procedure aa;
var t:integer;
begin
t:=dui1[1];
dui1[1]:=dui1[5];
dui1[5]:=t;
t:=dui1[2];
dui1[2]:=dui1[6];
dui1[6]:=t;
t:=dui1[3];
dui1[3]:=dui1[7];
dui1[7]:=t;
t:=dui1[4];
dui1[4]:=dui1[8];
dui1[8]:=t; end; procedure bb;
var t1,t2,t3,t4,t5,t6,t7,t8:integer; begin
t1:=dui1[1]; t2:=dui1[2]; t3:=dui1[3]; t4:=dui1[4];
t5:=dui1[5]; t6:=dui1[6]; t7:=dui1[7]; t8:=dui1[8];
dui1[1]:=t4;
dui1[2]:=t1;
dui1[3]:=t2;
dui1[4]:=t3;
dui1[5]:=t8;
dui1[6]:=t5;
dui1[7]:=t6;
dui1[8]:=t7; end; procedure cc;
var t1,t2,t3,t4:integer; begin
t1:=dui1[2];
t2:=dui1[3];
t3:=dui1[6];
t4:=dui1[7];
dui1[2]:=t3;
dui1[3]:=t1;
dui1[6]:=t4;
dui1[7]:=t2;
end; procedure init;
begin for i:=1 to 8 do
read(dui2[i]); end; function check(x:longint):boolean;
var i,yy:longint;
begin
for i:=1 to 8 do
if (queue[x,i])=(dui2[i]) then inc(yy);
if yy=8 then exit(true) else exit(false); end; begin
init;
queue[0,1]:=1;
queue[0,2]:=2;
queue[0,3]:=3;
queue[0,4]:=4;
queue[0,5]:=8;
queue[0,6]:=7;
queue[0,7]:=6;
queue[0,8]:=5;
head:=0;
tail:=1;
while head<tail do
begin
inc(head);
if check(head) then writeln(bu[head]) ;
for i:=1 to 8 do
dui1[i]:=queue[head,i]; for j:=1 to 3 do
begin
case j of
1: aa;
2:bb;
3:cc;
end;
inc(tail);
inc(bu[tail]); for k:=1 to 8 do
queue[tail,k]:=dui1[k];
end;
end; end.