#include <iostream>
#include <fstream>
using namespace std;
struct data{ int last,deep,opr,x;}q[100000];
bool use[8][8][8][8][8][8][8];
int main()
{
int now[8],l=1,r=1,goal=0,k[3][8]={{4,5,6,7,0,1,2,3},{3,0,1,2,7,4,5,6},{0,5,1,3,4,6,2,7}};
for (int i=0;i<=3;i++)
cin>>now[i];
for (int i=7;i>=4;i--)
cin>>now[i];
for (int i=0;i<=7;i++)
goal=goal*10+now[i];
q[1].deep=0;
q[1].opr=-1;
q[1].x=12348765;
use[0][1][2][3][7][6][5]=true;
q[1].last=0;
if (q[1].x==goal){
cout<<0<<endl;
cout<<endl;
return 0;
}
for (;;)
{
int tmp[8],x=q[l].x;
for (int i=7;i>=0;i--)
{
tmp[i]=x%10;
x/=10;
}
for (int i=0;i<3;i++)
{
int nn[8];
for (int j=0;j<8;j++) nn[j]=tmp[k[i][j]];
x=0;
for (int j=0;j<8;j++) x=x*10+nn[j];
if (!use[nn[0]-1][nn[1]-1][nn[2]-1][nn[3]-1][nn[4]-1][nn[5]-1][nn[6]-1]){
use[nn[0]-1][nn[1]-1][nn[2]-1][nn[3]-1][nn[4]-1][nn[5]-1][nn[6]-1]=true;
r++;
q[r].deep=q[l].deep+1;
q[r].x=x;
q[r].last=l;
q[r].opr=i;
if (x==goal) break;
}
}
l++;
if (x==goal) break;
}
cout<<q[r].deep<<endl;
int len=0,res[1000];
while (q[r].opr>=0)
{
len++;
res[len]=q[r].opr;
r=q[r].last;
}
for (int i=len;i>=1;i--)
cout<<(char)('A'+res[i]);
cout<<endl;
return 0;
}