#include <iostream>
#include <cstdio>
#include <algorithm>
#include <unordered_map>
#include <queue>
using namespace std;
string star="12345678";
unordered_map<string,string> ans;
queue <string> q;
string Awork(string magic){
char sss[8];
for(int i=0;i<8;i++){
sss[7-i]=magic[i];
}
return sss;
}
string Bwork(string magic){
char sss[8];
sss[0]=magic[3];sss[7]=magic[4];
for(int i=1;i<=3;i++){
sss[i]=magic[i-1];
}
for(int i=4;i<=6;i++){
sss[i]=magic[i+1];
}
return sss;
}
string Cwork(string magic){
char sss[8];
sss[0]=magic[0];sss[3]=magic[3];
sss[4]=magic[4];sss[7]=magic[7];
sss[1]=magic[6];sss[2]=magic[1];
sss[5]=magic[2];sss[6]=magic[5];
return sss;
}
int bfs(string end0){
q.push(star);
ans[star]="";
while(q.size()){
auto t=q.front();
q.pop();
for(int i=0;i<3;i++){
string a;
if(i==0) a=Awork(t);
else if(i==1) a=Bwork(t);
else a=Cwork(t);
if(!ans.count(a)){
if(i==0) ans[a]=ans[t]+'A';
else if(i==1) ans[a]=ans[t]+'B';
else ans[a]=ans[t]+'C';
if(a==end0) return ans[a].size();
q.push(a);
}
}
}
return -1;
}
int main(){
char ss[8];
string end1;
for(int i=0;i<8;i++){
cin>>ss[i];
}
end1=ss;
if(end1==star){
printf("0\n");
return 0;
}
int sum=bfs(end1);
cout<<sum<<endl<<ans[end1];
return 0;
}