//AOJ0121

#include <iostream>
#include <queue>
#include <algorithm>
using namespace std;

const int INF = 100000000;

char paz[3][5]; //???????????????

class Point{
public:
  int x;
  int y;

  void rot1(){ //???
    if(paz[y-1][x]!='#')
    swap(paz[y][x],paz[y-1][x]);
  }
  void rot2(){ //???
    if(paz[y+1][x]!='#')
    swap(paz[y][x],paz[y+1][x]);
  }
  void rot3(){ //???
    if(paz[y][x-1]!='#')
    swap(paz[y][x],paz[y][x-1]);
  }
  void rot4(){ //???
    if(paz[y][x+1]!='#')
    swap(paz[y][x],paz[y][x+1]);
  }
};



int main(){
  Point zero; //0?????´???

  for(int y=0; y<=3; y++){
    for(int x=0; x<=5; x++){
      paz[y][x] = '#';
    }
  }

  for(int y=1; y<=2; y++){
    for(int x=1; x<=4; x++){
      cin >> paz[y][x]; //???????????????????????????
      if(paz[y][x] == '0'){ //????????????????????????????????°???0??????
        x = zero.x;  //0?????´???????¨????
        y = zero.y;
      }
    }
  }

queue<Point> que;
int count = 0;

while(!que.empty()){  //?????\???????????§???????????°?????????
  zero = que.front();  que.pop();  //?????\?????????????????????

  if(paz[1][1]<paz[1][2] && paz[1][2]<paz[1][3] && paz[1][3]<paz[1][4]
  && paz[1][4]<paz[2][1] && paz[2][1]<paz[2][2] && paz[2][2]<paz[2][3]
  && paz[2][3]<paz[2][4]){
    cout << count << endl;
    break;  //??????????????£???????????????????????????????°??????°?????????????????????
  }

    Point nex1 = zero;  nex1.rot1();  count++; que.push(nex1);
    Point nex2 = zero;  nex2.rot2();  count++; que.push(nex2);
    Point nex3 = zero;  nex3.rot3();  count++; que.push(nex3);
    Point nex4 = zero;  nex4.rot4();  count++; que.push(nex4);
  }

return 0;
}