#include<cstdio>
#include<unordered_map>
#include<deque>
using namespace std;
unordered_map<int,int> step;
deque<int> que;
int main(){
	int i,v,b,z,n,s0;
	for(b=i=0;~scanf("%d",&v);){
		b=b<<3|v;
		if(v==0)
			z=i;
		if(++i==8){
			b=b<<3|z;
			step[b]=s0=1;
			while(b!=012345670){
				z=b&7;
				{
					// move 0 up/down
					n=b&7<<(8-(z^4))*3;
					n|=(n<<12|n>>12)&0777777770;
					n=(b^n)&~7|(z^4);
					int& s=step[n];
					if(!s){
						s=s0+1;
						que.push_back(n);
					}
				}
				if(z%4!=0){
					// move 0 left
					n=b&7<<(8-(z-1))*3;
					n|=n>>3;
					n=(b^n)&~7|(z-1);
					int& s=step[n];
					if(!s){
						s=s0+1;
						que.push_back(n);
					}
				}
				if(z%4!=3){
					// move 0 right
					n=b&7<<(8-(z+1))*3;
					n|=n<<3;
					n=(b^n)&~7|(z+1);
					int& s=step[n];
					if(!s){
						s=s0+1;
						que.push_back(n);
					}
				}
				// next step
				b=que.front();
				que.pop_front();
				s0=step[b];
			}
			printf("%d\n",s0-1);
			step.clear();
			que.clear();
			b=i=0;
		}
	}
	return 0;
}