/*Lucky_Glass*/
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
const int _10[11]={int(1e0),int(1e1),int(1e2),int(1e3),int(1e4),int(1e5),int(1e6),int(1e7),int(1e8),int(1e9),int(1e10)};
const int dir[4]={-1,1,4,-4};
int stp[76543215];
void Swap(int &num,int A,int B){
	int a=num%_10[A+1]/_10[A],b=num%_10[B+1]/_10[B];
	num-=a*_10[A]+b*_10[B];
	num+=b*_10[A]+a*_10[B];
}
void BFS(){
	queue<int> que;
	que.push(1234567);
	stp[1234567]=0;
	while(!que.empty())
	{
		int pre=que.front(),pos;que.pop();
		for(int i=0;i<8;i++)
			if(pre%_10[i+1]/_10[i]==0)
			{
				pos=i;
				break;
			}
		for(int i=0;i<4;i++)
		{
			int Pos=pos+dir[i],Num=pre;
			if(Pos<0 || Pos>7 || (i<2 && pos/4!=Pos/4)) continue;
			Swap(Num,Pos,pos);
			if(stp[Num]!=-1) continue;
			stp[Num]=stp[pre]+1;
			que.push(Num);
		}
	}
}
int main(){
	memset(stp,-1,sizeof stp);
	BFS();
	int beg;
	while(~scanf("%d",&beg))
	{
		for(int i=0,x;i<7;i++)
			scanf("%d",&x),beg=beg*10+x;
		printf("%d\n",stp[beg]);
	}
	return 0;
}
