// 2013/11/05 Tazoe

#include <iostream>
#include <string>
#include <queue>
#include <map>
using namespace std;

struct state{
	string p;
	int t;
};

int main()
{
	while(true){
		int P[8];

		cin >> P[0];

		if(cin.eof())
			break;

		for(int i=1; i<8; i++){
			cin >> P[i];
		}
/*
		for(int i=0; i<8; i++){
			cout << P[i] << ' ';
		}
		cout << endl;
*/

		string p = "88888888";
		for(int i=0; i<8; i++){
			p[i] = (char)(P[i]+'0');
		}
//		cout << p << endl;

		struct state s;
		s.p = p;
		s.t = 0;

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

		map<string, bool> memo;
		memo[s.p] = true;

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

			s = q.front();

			if(s.p=="01234567"){
				cout << s.t << endl;
				break;
			}

			if(s.p[0]=='0'){
				struct state t;
				t.p = s.p;
				t.p[0] = t.p[1];
				t.p[1] = '0';
				t.t = s.t+1;

				if(memo.find(t.p)==memo.end()){
					q.push(t);
					memo[t.p] = true;
				}

				t.p = s.p;
				t.p[0] = t.p[4];
				t.p[4] = '0';
				t.t = s.t+1;

				if(memo.find(t.p)==memo.end()){
					q.push(t);
					memo[t.p] = true;
				}
			}

			else if(s.p[1]=='0'){
				struct state t;
				t.p = s.p;
				t.p[1] = t.p[0];
				t.p[0] = '0';
				t.t = s.t+1;

				if(memo.find(t.p)==memo.end()){
					q.push(t);
					memo[t.p] = true;
				}

				t.p = s.p;
				t.p[1] = t.p[2];
				t.p[2] = '0';
				t.t = s.t+1;

				if(memo.find(t.p)==memo.end()){
					q.push(t);
					memo[t.p] = true;
				}

				t.p = s.p;
				t.p[1] = t.p[5];
				t.p[5] = '0';
				t.t = s.t+1;

				if(memo.find(t.p)==memo.end()){
					q.push(t);
					memo[t.p] = true;
				}
			}

			else if(s.p[2]=='0'){
				struct state t;
				t.p = s.p;
				t.p[2] = t.p[1];
				t.p[1] = '0';
				t.t = s.t+1;

				if(memo.find(t.p)==memo.end()){
					q.push(t);
					memo[t.p] = true;
				}

				t.p = s.p;
				t.p[2] = t.p[3];
				t.p[3] = '0';
				t.t = s.t+1;

				if(memo.find(t.p)==memo.end()){
					q.push(t);
					memo[t.p] = true;
				}

				t.p = s.p;
				t.p[2] = t.p[6];
				t.p[6] = '0';
				t.t = s.t+1;

				if(memo.find(t.p)==memo.end()){
					q.push(t);
					memo[t.p] = true;
				}
			}

			else if(s.p[3]=='0'){
				struct state t;
				t.p = s.p;
				t.p[3] = t.p[2];
				t.p[2] = '0';
				t.t = s.t+1;

				if(memo.find(t.p)==memo.end()){
					q.push(t);
					memo[t.p] = true;
				}

				t.p = s.p;
				t.p[3] = t.p[7];
				t.p[7] = '0';
				t.t = s.t+1;

				if(memo.find(t.p)==memo.end()){
					q.push(t);
					memo[t.p] = true;
				}
			}

			else if(s.p[4]=='0'){
				struct state t;
				t.p = s.p;
				t.p[4] = t.p[0];
				t.p[0] = '0';
				t.t = s.t+1;

				if(memo.find(t.p)==memo.end()){
					q.push(t);
					memo[t.p] = true;
				}

				t.p = s.p;
				t.p[4] = t.p[5];
				t.p[5] = '0';
				t.t = s.t+1;

				if(memo.find(t.p)==memo.end()){
					q.push(t);
					memo[t.p] = true;
				}
			}

			else if(s.p[5]=='0'){
				struct state t;
				t.p = s.p;
				t.p[5] = t.p[1];
				t.p[1] = '0';
				t.t = s.t+1;

				if(memo.find(t.p)==memo.end()){
					q.push(t);
					memo[t.p] = true;
				}

				t.p = s.p;
				t.p[5] = t.p[4];
				t.p[4] = '0';
				t.t = s.t+1;

				if(memo.find(t.p)==memo.end()){
					q.push(t);
					memo[t.p] = true;
				}

				t.p = s.p;
				t.p[5] = t.p[6];
				t.p[6] = '0';
				t.t = s.t+1;

				if(memo.find(t.p)==memo.end()){
					q.push(t);
					memo[t.p] = true;
				}
			}

			else if(s.p[6]=='0'){
				struct state t;
				t.p = s.p;
				t.p[6] = t.p[2];
				t.p[2] = '0';
				t.t = s.t+1;

				if(memo.find(t.p)==memo.end()){
					q.push(t);
					memo[t.p] = true;
				}

				t.p = s.p;
				t.p[6] = t.p[5];
				t.p[5] = '0';
				t.t = s.t+1;

				if(memo.find(t.p)==memo.end()){
					q.push(t);
					memo[t.p] = true;
				}

				t.p = s.p;
				t.p[6] = t.p[7];
				t.p[7] = '0';
				t.t = s.t+1;

				if(memo.find(t.p)==memo.end()){
					q.push(t);
					memo[t.p] = true;
				}
			}

			else if(s.p[7]=='0'){
				struct state t;
				t.p = s.p;
				t.p[7] = t.p[3];
				t.p[3] = '0';
				t.t = s.t+1;

				if(memo.find(t.p)==memo.end()){
					q.push(t);
					memo[t.p] = true;
				}

				t.p = s.p;
				t.p[7] = t.p[6];
				t.p[6] = '0';
				t.t = s.t+1;

				if(memo.find(t.p)==memo.end()){
					q.push(t);
					memo[t.p] = true;
				}
			}

			q.pop();
		}
	}

	return 0;
}