#include <iostream>
#include <algorithm> 
#include <queue>
using namespace std;
const int INF = 100;
bool memo[8][8][8][8][8][8][8][8]={};
class SP{
	public:
		int p[2][4];
		int n;
		SP(){
			n=0;
			/*for(int i=0;i<2;i++){
				for(int j=0;j<4;j++){
					p[i][j]= INF;
				}
			}*/
		}
		bool seven_puzzle(){
			return p[0][0]==0 && p[0][1]==1 && p[0][2]==2 && p[0][3]==3
			    && p[1][0]==4 && p[1][1]==5 && p[1][2]==6 && p[1][3]==7;
		}
		bool check(int i,int k){
			if(i==1 && memo[k][0][0][0][0][0][0][0]==false){
				memo[k][0][0][0][0][0][0][0] = true;
				return true;
			}
			if(i==2 && memo[0][k][0][0][0][0][0][0]==false){
				memo[0][k][0][0][0][0][0][0] = true;
				return true;
			}
			if(i==3 && memo[0][0][k][0][0][0][0][0]==false){
				memo[0][0][k][0][0][0][0][0] = true;
				return true;
			}
			if(i==4 && memo[0][0][0][k][0][0][0][0]==false){
				memo[0][0][0][k][0][0][0][0] = true;
				return true;
			}
			if(i==5 && memo[0][0][0][0][k][0][0][0]==false){
				memo[0][0][0][0][k][0][0][0] = true;
				return true;
			}
			if(i==6 && memo[0][0][0][0][0][k][0][0]==false){
				memo[0][0][0][0][0][k][0][0] = true;
				return true;
			}
			if(i==7 && memo[0][0][0][0][0][0][k][0]==false){
				memo[0][0][0][0][0][0][k][0] = true;
				return true;
			}
		}
			
		void rot1(){
			if(check(1,p[0][0])){
				swap(p[0][0],p[0][1]);
				n++;
				memo[p[0][0]][0][0][0][0][0][0][0] = true;
			}
		}
		void rot2(){
			if(check(2,p[0][1])){
				swap(p[0][1],p[0][2]);
				n++;
				memo[0][p[0][1]][0][0][0][0][0][0] = true;
			}
		}
		void rot3(){
			if(check(3,p[0][2])){
				swap(p[0][2],p[0][3]);
				n++;
				memo[0][0][p[0][2]][0][0][0][0][0] = true;
			}
		}
		void rot4(){
			if(check(4,p[0][0])){
				swap(p[0][0],p[1][0]);
				n++;
				memo[0][0][0][p[0][0]][0][0][0][0] = true;
			}
		}
		void rot5(){
			if(check(5,p[0][1])){
				swap(p[0][1],p[1][1]);
				n++;
				memo[0][0][0][0][p[0][1]][0][0][0] = true;
			}
		}
		void rot6(){
			if(check(6,p[0][2])){
				swap(p[0][2],p[1][2]);
				n++;
				memo[0][0][0][0][0][p[0][2]][0][0] = true;
			}
		}
		void rot7(){
			if(check(7,p[0][3])){
				swap(p[0][3],p[1][3]);
				n++;
				memo[0][0][0][0][0][0][p[0][3]][0] = true;
			}
		}
};
int main(){
	//while(true){
		SP sp;
		for(int i=0;i<2;i++){
			for(int j=0;j<4;j++){
				cin >> sp.p[i][j];
			}
		}
		queue<SP> que;
		que.push(sp);
		while(!que.empty()){
			sp = que.front();
			que.pop();
			if (sp.seven_puzzle()){
				cout << sp.n << endl;
				break;
			}
			SP sp1 = sp;
			sp1.rot1();
			que.push(sp1);
	
			SP sp2 = sp;
			sp2.rot2();
			que.push(sp2);

			SP sp3 = sp;
			sp3.rot3();
			que.push(sp3);
		
			SP sp4 = sp;
			sp4.rot4();
			que.push(sp4);
			
			SP sp5 = sp;
			sp5.rot5();
			que.push(sp5);

			SP sp6 = sp;
			sp6.rot6();
			que.push(sp6);
		
			SP sp7 = sp;
			sp7.rot7();
			que.push(sp7);
		}
	//}
	return 0;
}
			