#include <iostream>
#include <string>
#include <queue>
#include <algorithm>
#include <set>

using namespace std;

typedef pair<string, int> P;

	int main() {
	string abc = "01234567";
	int a;
	while (cin >> a) {
		string k = "";
		for (int i = 0; i < 8; i++) {
			if (i != 0) {
				cin >> a;
			}
			k += abc[a];
		}
		if (k == abc) {
			cout << 0 << endl;
		} else {
			queue<P> q;
			q.push(P(k, 0));
			set<string> ss;
			ss.insert(k);
			while (!q.empty()) {
				P p = q.front();
				q.pop();
				string ka = p.first;
				int n;
				for (int i = 0; i < 8; i++) {
					if (ka[i] == '0') {
						n = i;
						break;
					}
				}
				if (n != 0 && n != 4) {
					string ka1 = ka;
					swap(ka1[n], ka1[n-1]);
					set<string>::iterator ite = ss.find(ka1);
					if (ite == ss.end()) {
						if (ka1 == abc) {
							cout << p.second+1 << endl;
							break;
						} else {
							q.push(P(ka1, p.second+1));
							ss.insert(ka1);
						}
					}
				}
				if (n != 3 && n != 7) {
					string ka1 = ka;
					swap(ka1[n], ka1[n+1]);
					set<string>::iterator ite = ss.find(ka1);
					if (ite == ss.end()) {
						if (ka1 == abc) {
							cout << p.second+1 << endl;
							break;
						} else {
							q.push(P(ka1, p.second+1));
							ss.insert(ka1);
						}
					}
				}
				if (n <= 3) {
					string ka1 = ka;
					swap(ka1[n], ka1[n+4]);
					set<string>::iterator ite = ss.find(ka1);
					if (ite == ss.end()) {
						if (ka1 == abc) {
							cout << p.second+1 << endl;
							break;
						} else {
							q.push(P(ka1, p.second+1));
							ss.insert(ka1);
						}
					}
				}
				if (n > 3) {
					string ka1 = ka;
					swap(ka1[n], ka1[n-4]);
					set<string>::iterator ite = ss.find(ka1);
					if (ite == ss.end()) {
						if (ka1 == abc) {
							cout << p.second+1 << endl;
							break;
						} else {
							q.push(P(ka1, p.second+1));
							ss.insert(ka1);
						}	
					}
				}
			}
		}
	}
	return 0;
}