#include <vector>
#include <cmath>
#include <algorithm>
#include <sstream>
#include <string>
#include <cstring>
using namespace std;
typedef pair<string, int> P;

int iti;
string n;

void solve(){
	queue<P> que;
	map<string, int> m;
	map<string, int>::iterator ite;
	que.push(P(n, 0));
	m.insert(make_pair(n, 0));
	while(true){
		P p = que.front(); que.pop();
		if(p.first == "01234567"){
			cout << p.second << endl;
			break;
		}
		for(int i = 0; i < 8; i++){
			if(p.first[i] == '0') iti = i;
		}
		if(iti != 3 && iti != 7){
			swap(p.first[iti], p.first[iti+1]);
			ite = m.find(p.first);
			if(ite == m.end()){
				que.push(P(p.first, p.second+1));
				m.insert(make_pair(p.first, p.second+1));
			}
			swap(p.first[iti], p.first[iti+1]);
		}
		if(iti != 0 && iti != 4){
			swap(p.first[iti], p.first[iti-1]);
			ite = m.find(p.first);
			if(ite == m.end()){
				que.push(P(p.first, p.second+1));
				m.insert(make_pair(p.first, p.second+1));
			}
			swap(p.first[iti], p.first[iti-1]);
		}
		if(iti <= 3){
			swap(p.first[iti+4], p.first[iti]);
			ite = m.find(p.first);
			if(ite == m.end()){
				que.push(P(p.first, p.second+1));
				m.insert(make_pair(p.first, p.second+1));
			}
			swap(p.first[iti+4], p.first[iti]);
		}
		else{
			swap(p.first[iti-4], p.first[iti]);
			ite = m.find(p.first);
			if(ite == m.end()){
				que.push(P(p.first, p.second+1));
				m.insert(make_pair(p.first, p.second+1));
			}
			swap(p.first[iti-4], p.first[iti]);
		}
	}
}

int main(){
	char trash;
	while(cin >> trash){
		n.push_back(trash);
		for(int i = 1; i < 8; i++){ 
			cin >> trash;
			n.push_back(trash);
		}
		solve();
		n.clear();
	}
}