
#include<bits/stdc++.h>
using namespace std;
struct as{
int st;
int aa[2][4];
int temp;
int tem[31][2][4];
vector<char> s;
};
int a[2][4]={{1,2,3,4},{8,7,6,5}},arr[2][4],endd[2][4];
queue<as> q;
int judge(int (*aaa)[4],int (*endd)[4]){
int t=1;
for(int i=0;i<2;i++)
for(int j=0;j<4;j++){
if(aaa[i][j]!=endd[i][j]){
t=0;
}
}
return t;
}
int judge2(int (*aaa)[4],int (*tem)[2][4],int *temp){
int tt=1,te=*temp;
for(int k=0;k<te;k++){
int t=1;
for(int i=0;i<2;i++)
for(int j=0;j<4;j++)
{
if(aaa[i][j]!=tem[k][i][j]){
t=0;
}
}
if(t==1) tt=0;
}
return tt;
}
void bfs(){
as no,ne;
for(int i=0;i<2;i++)
for(int j=0;j<4;j++)
no.aa[i][j]=a[i][j];
for(int i=0;i<2;i++)
for(int j=0;j<4;j++)
{
no.tem[1][i][j]=a[i][j];
}
no.temp=1;
no.st=0;
q.push(no);
while(!q.empty()){
no=q.front();
for(int i=0;i<2;i++)
for(int j=0;j<4;j++)
a[i][j]=no.aa[i][j];
q.pop();
if(judge(no.aa,endd)==1){
printf("%d\n",no.st);
for(int i=0;i<no.s.size();i++){
int j;
if(j==60){
printf("\n");
j=0;
}
printf("%c",no.s[i]);
j++;
}
exit(0);
}
ne=no;
for(int i=0;i<2;i++)
for(int j=0;j<4;j++)
arr[i][j]=a[i][j];
for(int i=0;i<4;i++){
int t=arr[0][i];
arr[0][i]=arr[1][i];
arr[1][i]=t;
}
for(int i=0;i<2;i++){
for(int j=0;j<4;j++)
{
ne.aa[i][j]=arr[i][j];
}
}
ne.s.push_back('A');
ne.st=no.st+1;
if(judge2(ne.aa,ne.tem,&ne.temp)==1)
{
ne.temp++;
for(int i=0;i<2;i++)
for(int j=0;j<4;j++){
ne.tem[ne.temp][i][j]=ne.aa[i][j];
}
q.push(ne);
}
ne=no;
for(int i=0;i<2;i++)
for(int j=0;j<4;j++)
arr[i][j]=a[i][j];
for(int i=0;i<2;i++){
int t=arr[i][3];
for(int j=2;j>=0;j--){
arr[i][j+1]=arr[i][j];
}
arr[i][0]=t;
}
for(int i=0;i<2;i++)
for(int j=0;j<4;j++)
ne.aa[i][j]=arr[i][j];
ne.s.push_back('B');
ne.st=no.st+1;
if(judge2(ne.aa,ne.tem,&ne.temp)==1)
{
ne.temp++;
for(int i=0;i<2;i++)
for(int j=0;j<4;j++){
ne.tem[ne.temp][i][j]=ne.aa[i][j];
}
q.push(ne);
}
ne=no;
for(int i=0;i<2;i++)
for(int j=0;j<4;j++)
arr[i][j]=a[i][j];
int t=arr[0][1];
arr[0][1]=arr[1][1];
int t2=arr[0][2];
arr[0][2]=t;
arr[1][1]=arr[1][2];
arr[1][2]=t2;
for(int i=0;i<2;i++)
for(int j=0;j<4;j++)
ne.aa[i][j]=arr[i][j];
ne.s.push_back('C');
ne.st=no.st+1;
if(judge2(ne.aa,ne.tem,&ne.temp)==1)
{
ne.temp++;
for(int i=0;i<2;i++)
for(int j=0;j<4;j++){
ne.tem[ne.temp][i][j]=ne.aa[i][j];
}
q.push(ne);
}
}
}
int main(){
for(int j=0;j<4;j++)
scanf("%d",&endd[0][j]) ;
for(int j=3;j>=0;j--){
scanf("%d",&endd[1][j]) ;
}
bfs();
}