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

using namespace std;

char nums[8];
map<string,bool> used;
string src;

const int d[]={-1,4,1,-4};

int bfs(string s){
	if(s==src)
		return 0;

	set<string> *prv=new set<string>();
	set<string> *nxt=new set<string>();

	prv->insert(s);


	int cnt=1;
	while(prv->size()){
		for(set<string>::iterator it = prv->begin(); it != prv->end(); it++){
			string cs=*it;
			if(used[cs])
				continue;
			used[cs]=true;
			int zi;
			for(int i = 0; i < s.size(); i++){
				if(cs[i]=='0'){
					zi=i;
					break;
				}
			}
			for(int i = 0; i < 4; i++){
				int np=zi+d[i];
				if((zi==0&&(i==1||i==2))
					||((zi>=1&&zi<=2)&&(i>=0&&i<=2))
					||(zi==3&&(i==0||i==1))
					||(zi==4&&(i==3||i==2))
					||(zi==7&&(i==0||i==3))
					||((zi>=5&&zi<=6)&&(i!=1))
					){
					string ns=cs;
					swap(ns[zi],ns[np]);
					if(!used[ns]){
						nxt->insert(ns);
						//used[ns]=true;
						if(ns==src){
							return cnt;
						}
					}
				}
			}
		}
		swap(prv,nxt);
		nxt->clear();
		cnt++;
	}
	delete prv,nxt;
}

//int dfs(string s,int cnt){
//	//cout<<cnt<<endl;
//	if(s=="01234567"){
//		return 0;
//	}
//	//if(dp[s]!=-1)
//		return dp[s];
//
//	//cout<<cnt<<endl;
//	int idx;
//	for(int i = 0; i < s.size(); i++){
//		if(s[i]=='0'){
//			idx=i;
//			break;
//		}
//	}
//	int minNum=10000000;
//	for(int i = 0; i < 4; i++){
//		int np=idx+d[i];
//		if(np>=0&&np<8){
//			string ns=s;
//			swap(ns[idx],ns[np]);
//			if(!used[ns]){
//				//used.insert(ns);
//				used[ns]=true;
//				minNum=min(minNum,dfs(ns,cnt+1)+1);
//				used[ns]=false;
//				//used.erase(ns);
//			}
//		}
//	}
//	dp[s]=minNum;
//	return minNum;
//}

int main(){

	string ts="01234567";
	do{
		used[ts]=false;
	}while(next_permutation(ts.begin(),ts.end()));

	while(cin>>nums[0]>>nums[1]>>nums[2]>>nums[3]>>nums[4]>>nums[5]>>nums[6]>>nums[7]){
		string s;
		for(int i = 0; i < 8; i++){
			s+=nums[i];
		}
		for(map<string,bool>::iterator it = used.begin(); it != used.end(); it++){
			used[it->first]=false;
		}
		src=s;

//		used[ts]=true;

		int t=bfs(ts);
		cout<<t<<endl;
	}

	return 0;
}