#include<bits/stdc++.h>
using namespace std;
struct node{string s,ans;int step;};
string s,now,to;map<string,bool>vis;queue<node>q;
int main(){
for(int i=1;i<=4;i++)cin>>s,now+=s;
for(int i=1;i<=4;i++)cin>>s,to+=s;
vis[now]=1,q.push({now,"",0});
while(!q.empty()){
string s=q.front().s,ans=q.front().ans;int step=q.front().step;q.pop();
if(s==to){
cout<<step;
for(int i=0;i<ans.size();i++){
if(i%4==0)puts("");
cout<<ans[i];
}return 0;
}for(int i=0;i<16;i++)for(int j=i+1;j<16;j++){
swap(s[i],s[j]);
if(!vis[s])vis[s]=1,q.push({s,ans+char(i/4+'1')+char((i-1)%4+'2')+char(j/4+'1')+char((j-1)%4+'2'),step+1});
swap(s[i],s[j]);
}
}
}