#include<iostream>
#include<cstring>
#include<algorithm>
#include<math.h>
#include<queue>
#include<cstdio>
#include<limits.h>
#include<map>
using namespace std;
map<string ,int>	myM;
int mov[4]= {4,-4,1,-1};
void bfs() {
	string init="01234567";
	myM[init]=0;
	queue<string>	myQ;
	myQ.push(init);
	while(!myQ.empty()) {
		string s=myQ.front();
		myQ.pop();
		int index=s.find('0',0);
		for(int i=0; i<4; i++) {
			int t=index+mov[i];
			string temp=s;
			if(t>=0&&t<8&&!(index==3&&t==4)&&!(index==4&&t==3)) {
				swap(temp[index],temp[t]);
				if(myM.find(temp)==myM.end()) {
					myQ.push(temp);
					myM[temp]=myM[s]+1;
				}
			}
		}
	}
}
int main() {
	string input;
	bfs();
	while(getline(cin,input)) {
		input.erase(remove(input.begin(),input.end(),' '),input.end());
		printf("%d\n",myM[input]);
	}
	return 0;
}
