// 2015/07/07 Tazoe

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

class SP{
public:
	int p[8];
	int n;		// 手数

	bool is_over()		// 終了判定
	{
		for(int i=0; i<8; i++){
			if(p[i]!=i)
				return false;
		}

		return true;
	}

	int find0()		// 0を探す
	{
		for(int i=0; i<8; i++){
			if(p[i]==0)
				return i;
		}

		return -1;
	}

	void swp1()		// 交換（上）
	{
		int i0 = find0();

		if(4<=i0 && i0<=7){
			swap(p[i0], p[i0-4]);
		}
	}

	void swp2()		// 交換（下）
	{
		int i0 = find0();

		if(0<=i0 && i0<=3){
			swap(p[i0], p[i0+4]);
		}
	}

	void swp3()		// 交換（左）
	{
		int i0 = find0();

		if(i0!=0 && i0!=4){
			swap(p[i0], p[i0-1]);
		}
	}

	void swp4()		// 交換（右）
	{
		int i0 = find0();

		if(i0!=3 && i0!=7){
			swap(p[i0], p[i0+1]);
		}
	}
};

bool memo[8][8][8][8][8][8][8][8];	// メモ

int main()
{
	while(true){
		SP now;
		cin >> now.p[0];

		if(cin.eof())
			break;

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

		queue<SP> que;			// キュー
		que.push(now);

		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++){
		for(int i7=0; i7<8; i7++){
			memo[i0][i1][i2][i3][i4][i5][i6][i7] = false;
		}
		}
		}
		}
		}
		}
		}
		}

		memo[now.p[0]][now.p[1]][now.p[2]][now.p[3]][now.p[4]][now.p[5]][now.p[6]][now.p[7]] = true;

		while(!que.empty()){		// キューが空になるまで
			now = que.front();
			que.pop();

			if(now.is_over()){
				cout << now.n << endl;
				break;
			}

			SP nex1 = now;  nex1.swp1();  nex1.n++;
			if(!memo[nex1.p[0]][nex1.p[1]][nex1.p[2]][nex1.p[3]][nex1.p[4]][nex1.p[5]][nex1.p[6]][nex1.p[7]]){
				que.push(nex1);
				memo[nex1.p[0]][nex1.p[1]][nex1.p[2]][nex1.p[3]][nex1.p[4]][nex1.p[5]][nex1.p[6]][nex1.p[7]] = true;
			}

			SP nex2 = now;  nex2.swp2();  nex2.n++;
			if(!memo[nex2.p[0]][nex2.p[1]][nex2.p[2]][nex2.p[3]][nex2.p[4]][nex2.p[5]][nex2.p[6]][nex2.p[7]]){
				que.push(nex2);
				memo[nex2.p[0]][nex2.p[1]][nex2.p[2]][nex2.p[3]][nex2.p[4]][nex2.p[5]][nex2.p[6]][nex2.p[7]] = true;
			}

			SP nex3 = now;  nex3.swp3();  nex3.n++;
			if(!memo[nex3.p[0]][nex3.p[1]][nex3.p[2]][nex3.p[3]][nex3.p[4]][nex3.p[5]][nex3.p[6]][nex3.p[7]]){
				que.push(nex3);
				memo[nex3.p[0]][nex3.p[1]][nex3.p[2]][nex3.p[3]][nex3.p[4]][nex3.p[5]][nex3.p[6]][nex3.p[7]] = true;
			}

			SP nex4 = now;  nex4.swp4();  nex4.n++;
			if(!memo[nex4.p[0]][nex4.p[1]][nex4.p[2]][nex4.p[3]][nex4.p[4]][nex4.p[5]][nex4.p[6]][nex4.p[7]]){
				que.push(nex4);
				memo[nex4.p[0]][nex4.p[1]][nex4.p[2]][nex4.p[3]][nex4.p[4]][nex4.p[5]][nex4.p[6]][nex4.p[7]] = true;
			}
		}
	}

	return 0;
}