// AOJ 0121
#include<bits/stdc++.h>
using namespace std;

const int max_n = 8;
map<array<int, max_n> , int> vis;
array<int, 4> dt = {1, -1, 4, -4};
array<int, max_n> init, final; 


int bfs(array<int, max_n> A){
	queue<array<int, max_n>> que;
	que.push(A);
	while(!que.empty()){
		array <int, max_n> B = que.front();
		que.pop();
		int p;
		for(p = 0; B[p]; ++p);
		for(int i = 0; i < 4; ++i){
			array<int, max_n> C = B;
			int dp = p + dt[i];
			if(dp >= 0 && dp < max_n && ((p % 4 == dp % 4) || (p / 4 == dp /4 ))){
				swap(C[p], C[dp]);
				if(!vis[C]){
					vis[C] = vis[B] + 1;
					que.push(C);
				}
			}
		}
	}
}

int main(){
	for(int i = 0; i < max_n; ++i) init[i] = i;
	vis[init] = 1;
	bfs(init);
	while(true){
		for(int i = 0; i < max_n; ++i) 
			if(scanf("%d", &final[i]) == EOF) return 0;
		printf("%d\n", vis[final] - 1);  
	}
	return 0;
}
