#include <iostream>
#include <stdio.h>
#include <string.h>
#include <map>
#include <queue>

using namespace std;

map<string,int>m;
int mov[4]={1,-1,4,-4};


int i=0;
string line,str;
void bfs(){
	queue<string> que;
	que.push("01234567"); m["01234567"]=0;
	while(que.size()){
		int zero; 
		string sr=que.front();que.pop(); int move=m[sr]; 
		for(int i=0;i<8;++i){
			if (sr[i]=='0') {
				 zero=i;
				break;
			}
		} 
		switch(zero){
			case 3:{
				swap(sr[2],sr[3]);  
				if(m[sr]) {
							if(m[sr]>move+1) {
							m[sr]=move+1;
				 que.push(sr);}}
				 	else {
					 m[sr]=move+1; que.push(sr);}
				swap(sr[2],sr[3]);
				swap(sr[3],sr[7]); 
				if(m[sr]) {
							if(m[sr]>move+1) {
							m[sr]=move+1;
				 que.push(sr);}}
				 	else {
					 m[sr]=move+1; que.push(sr);}
				swap(sr[3],sr[7]);
				
				break;
			}
			case 4:{swap(sr[0],sr[4]);  
			if(m[sr]) {
							if(m[sr]>move+1) {
							m[sr]=move+1;
				 que.push(sr);}}
				 	else {
					 m[sr]=move+1; que.push(sr);}
				swap(sr[0],sr[4]);
				swap(sr[4],sr[5]);  
				if(m[sr]) {
							if(m[sr]>move+1) {
							m[sr]=move+1;
				 que.push(sr);}}
				 	else {
					 m[sr]=move+1; que.push(sr);}
				swap(sr[4],sr[5]);
				break;
			}
			default:{
				for(int j=0;j<=3;++j){
					if ((zero+mov[j]>=0)&&(zero+mov[j]<=7)){
						int a=zero+mov[j]; 
						swap(sr[zero],sr[a]); 
						if(m[sr]) {
							if(m[sr]>move+1) {
							m[sr]=move+1;
				 que.push(sr);}}
				 	else {
					 m[sr]=move+1; que.push(sr);}
				swap(sr[zero],sr[a]);
					}
				}
				break;
			}
		}
	}
}

int main(){
	bfs(); m["01234567"]=0; char x; 
	while (getline(cin, line)){
	 int j=0;
		for(int i=0;i<=14;i+=2){
			str+=line[i];
		}
 
			cout<<m[str]<<endl;
		 
		 }
	}