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

using namespace std;

void func (int []);
int enc(int []);
void dec(int [],int);
int zero(int []);
void init(void);

#define MM 256*256*256
unsigned char f[MM];
int tona[8][3]={{1,4,-1},{0,2,5},{1,3,6},{2,7,-1},{0,5,-1},{1,4,6},{2,5,7},{3,6,-1}};
int main(void)
{
	int s[8];
	init();
	while(scanf("%d %d %d %d %d %d %d %d",&s[0],&s[1],&s[2],&s[3],&s[4],&s[5],&s[6],&s[7])!=EOF)	{
		func(s);
	}
	return 0;
}
int enc(int s[])
{
	int i,suu;
	suu=s[0];
	for(i=1;i<8;i++)	{
		suu=suu<<3;
		suu=suu|s[i];
	}
	return suu;
}
void dec(int s[],int suu)
{
	int i;
	for(i=7;i>=0;i--)	{
		s[i]=suu&7;
		suu=suu>>3;
	}
}
int zero(int suu[])
{
	int i;
	for(i=0;i<8;i++)	{
		if(suu[i]==0)	{
			return i;
		}
	}
}
void func(int s[])
{
	int i,cnt=0;
	int suu,s2,s3,buf[8],z,wk,tonari;
	bool flg;

	suu=enc(s);
	printf("%d\n",f[suu]);

}

void init(void)
{
	int i,cnt=0;
	int suu,s2,s3,buf[8],z,wk,tonari;
	bool flg;
	queue <int> qu;
	int sinit[8]={0,1,2,3,4,5,6,7};
	
	suu=enc(sinit);
	for(i=0;i<MM;i++)	{
		f[i]=255;
	}
	qu.push(suu);
	f[suu]=0;
	cnt++;
	while(qu.size()!=0)	{
		s2=qu.front();

		qu.pop();

		dec(buf,s2);
		z=zero(buf);
		for(i=0;i<3;i++)	{
			tonari=tona[z][i];
			if(tonari>=0)	{
				wk=buf[tonari];
				buf[tonari]=buf[z];
				buf[z]=wk;
				s3=enc(buf);
				if(f[s3]==255)	{
					qu.push(s3);
					f[s3]=f[s2]+1;
					cnt++;
				}
				wk=buf[tonari];
				buf[tonari]=buf[z];
				buf[z]=wk;
			}
		}
	}
}
