// 2013/11/06 Tazoe

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

struct state{
	int p[8];
	int t;
};

int main()
{
	while(true){
		struct state s;

		cin >> s.p[0];

		if(cin.eof())				// ファイルの終りならば
			break;

		for(int i=1; i<8; i++){
			cin >> s.p[i];
		}

		s.t = 0;

		if(s.p[0]==0 && s.p[1]==1 && s.p[2]==2 && s.p[3]==3 && s.p[4]==4 && s.p[5]==5 && s.p[6]==6 && s.p[7]==7){
			cout << s.t << endl;
			continue;
		}

		bool memo[8][8][8][8][8][8][8];		// メモリ節約のため7次元
		for(int i0=0; i0<8; i0++){
		for(int i1=0; i1<8; i1++){
		for(int i2=0; i2<8; i2++){
		for(int i3=0; i3<8; i3++){
		for(int i4=0; i4<8; i4++){
		for(int i5=0; i5<8; i5++){
		for(int i6=0; i6<8; i6++){
			memo[i0][i1][i2][i3][i4][i5][i6] = false;
		}
		}
		}
		}
		}
		}
		}
		memo[s.p[0]][s.p[1]][s.p[2]][s.p[3]][s.p[4]][s.p[5]][s.p[6]] = true;

		queue<struct state> q;
		q.push(s);

		while(true){
			if(q.empty())
				break;

			s = q.front();
			q.pop();

			s.t++;

			int I = 0;
			while(s.p[I]!=0){			// 0の位置を探す
				I++;
			}

			if(0<=I && I<=3){			// 上ならば
				swap(s.p[I], s.p[I+4]);
				if(s.p[0]==0 && s.p[1]==1 && s.p[2]==2 && s.p[3]==3 && s.p[4]==4 && s.p[5]==5 && s.p[6]==6 && s.p[7]==7){
					cout << s.t << endl;
					break;
				}
				if(!memo[s.p[0]][s.p[1]][s.p[2]][s.p[3]][s.p[4]][s.p[5]][s.p[6]]){
					memo[s.p[0]][s.p[1]][s.p[2]][s.p[3]][s.p[4]][s.p[5]][s.p[6]] = true;
					q.push(s);
				}
				swap(s.p[I], s.p[I+4]);
			}

			if(4<=I && I<=7){			// 下ならば
				swap(s.p[I], s.p[I-4]);
				if(s.p[0]==0 && s.p[1]==1 && s.p[2]==2 && s.p[3]==3 && s.p[4]==4 && s.p[5]==5 && s.p[6]==6 && s.p[7]==7){
					cout << s.t << endl;
					break;
				}
				if(!memo[s.p[0]][s.p[1]][s.p[2]][s.p[3]][s.p[4]][s.p[5]][s.p[6]]){
					memo[s.p[0]][s.p[1]][s.p[2]][s.p[3]][s.p[4]][s.p[5]][s.p[6]] = true;
					q.push(s);
				}
				swap(s.p[I], s.p[I-4]);
			}

			if(I!=0 && I!=4){			// 左端でなければ
				swap(s.p[I], s.p[I-1]);
				if(s.p[0]==0 && s.p[1]==1 && s.p[2]==2 && s.p[3]==3 && s.p[4]==4 && s.p[5]==5 && s.p[6]==6 && s.p[7]==7){
					cout << s.t << endl;
					break;
				}
				if(!memo[s.p[0]][s.p[1]][s.p[2]][s.p[3]][s.p[4]][s.p[5]][s.p[6]]){
					memo[s.p[0]][s.p[1]][s.p[2]][s.p[3]][s.p[4]][s.p[5]][s.p[6]] = true;
					q.push(s);
				}
				swap(s.p[I], s.p[I-1]);
			}

			if(I!=3 && I!=7){			// 右端でなければ
				swap(s.p[I], s.p[I+1]);
				if(s.p[0]==0 && s.p[1]==1 && s.p[2]==2 && s.p[3]==3 && s.p[4]==4 && s.p[5]==5 && s.p[6]==6 && s.p[7]==7){
					cout << s.t << endl;
					break;
				}
				if(!memo[s.p[0]][s.p[1]][s.p[2]][s.p[3]][s.p[4]][s.p[5]][s.p[6]]){
					memo[s.p[0]][s.p[1]][s.p[2]][s.p[3]][s.p[4]][s.p[5]][s.p[6]] = true;
					q.push(s);
				}
				swap(s.p[I], s.p[I+1]);
			}
		}
	}

	return 0;
}