#include<queue>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int MAXN=15;
const int MAXR=2000000;
int f[MAXN]={0,4,-4,1,-1};
int r[MAXN]={1},dp[MAXR];
queue<int>T[10];
int h(int a[]){
	int ret=0;
	for(int i=1;i<=8;i++){
		int cnt=0;
		for(int j=i+1;j<=8;j++)
			if(a[i]>a[j])cnt++;
		ret+=cnt*r[9-i];
	}
	return ret;
}
void Insert(int a[]){
	for(int i=1;i<=8;i++)
		T[i].push(a[i]);
}
void Read(int a[]){
	for(int i=1;i<=8;i++)
		a[i]=T[i].front(),T[i].pop();
}
void Init(){
	for(int i=0;i<=8;i++)
		while(!T[i].empty())
			T[i].pop();
	int a[MAXN]={0,0,1,2,3,4,5,6,7};
	memset(dp,0X3F,sizeof(dp));
	for(int i=1;i<=9;i++)r[i]=r[i-1]*i;
	Insert(a);dp[h(a)]=0;
	while(!T[1].empty()){
		int start;Read(a);
		for(int i=1;i<=8;i++)
			if(!a[i]){
				start=i;
				break;
			}
		int u=dp[h(a)];
		for(int i=1;i<=4;i++){
			int w=f[i]+start;
			if(w>=1&&w<=8&&(w!=5||f[i]!=1)&&(w!=4||f[i]!=-1)){
				swap(a[start],a[w]);
				if(dp[h(a)]>u+1){
					dp[h(a)]=u+1;
					Insert(a);
				}
				swap(a[start],a[w]);
			}
		}
	}
}
int main(){
	Init();int a[MAXN]={0};
	while(~scanf("%d",&a[1])){
		for(int i=2;i<=8;i++)
			scanf("%d",&a[i]);
		printf("%d\n",dp[h(a)]);
	}
}
