#include<bits/stdc++.h>
using namespace std;
map<string,int> dist;
map<string,pair<char,string> >pre;
string moveA(string t)
{
reverse(t.begin(),t.end());
return t;
}
string moveB(string t)
{
string str="";
str+=t[3];
str+=t[0];
str+=t[1];
str+=t[2];
str+=t[5];
str+=t[6];
str+=t[7];
str+=t[4];
return str;
}
string moveC(string t)
{
string str="";
str+=t[0];
str+=t[6];
str+=t[1];
str+=t[3];
str+=t[4];
str+=t[2];
str+=t[5];
str+=t[7];
return str;
}
int bfs(string start, string end)
{
if(start==end) return 0;
queue<string> q;
q.push(start);
while(!q.empty())
{
string t=q.front();
q.pop();
string next[3];
next[0]=moveA(t);
next[1]=moveB(t);
next[2]=moveC(t);
for(int i=0;i<3;i++)
{
string nx=next[i];
if(dist.count(nx)==0)
{
dist[nx]=dist[t]+1;
pre[nx]={i+'A',t};
if(nx==end) return dist[nx];
q.push(nx);
}
}
}
return -1;
}
int main()
{
string end="",start="12345678";
for(int i=0;i<8;i++)
{
int x;
cin>>x;
end+=x+'0';
}
int num=bfs(start,end);
cout<<num<<endl;
string ans;
while(end!=start)
{
ans+=pre[end].first;
end=pre[end].second;
}
reverse(ans.begin(),ans.end());
if(num>0)
cout<<ans;
return 0;
}