#include <iostream>
#include <vector>
#include <map>

using namespace std;

#define rep(i,n) for(int i=0;i<n;i++)
static const int INF=1<<24;
map<vector<vector<int> >,int> ma;
vector<vector<int> > puz;
vector<vector<int> > v;
template<class T>
void initvv(vector<vector<T> > &v,int a,int b,const T &t=T()){
	v.assign(a,vector<T>(b,t));
}


int solve(int c){
	// cout<<c<<endl;
	// if(c==1){
		// rep(i,2){
			// rep(j,4){
				// cout<<v[i][j]<<" ";
			// }
			// cout<<endl;
		// }
		// cout<<endl;
	// }
	bool f=true;
	rep(i,2){
		rep(j,4){
			if(v[i][j]!=puz[i][j]){
				f=false;
				// if(c==1)cout<<i<<" "<<j<<" "<<v[i][j]<<" "<<puz[i][j]<<endl;
			}
		}
	}

	if(f) return c;
	if(ma[v]) return ma[v];
	int t=INF;
	rep(i,4){
		if(v[0][i]==0){
			if(i>=1){
				swap(v[0][i-1],v[0][i]);
				// if(c==0) cout<<"hoge\n";
				t=min(t,solve(c+1));
				swap(v[0][i-1],v[0][i]);
			}
			if(i!=3){
				swap(v[0][i+1],v[0][i]);
				// cout<<"hoge";
				t=min(t,solve(c+1));
				return 0;
				swap(v[0][i+1],v[0][i]);
			}
			swap(v[1][i],v[0][i]);
			t=min(t,solve(c+1));
			swap(v[1][i],v[0][i]);
		}
		if(v[1][i]==0){
			if(i>=1){
				swap(v[1][i-1],v[1][i]);
				t=min(t,solve(c+1));
				swap(v[1][i-1],v[1][i]);
			}
			if(i!=3){
				swap(v[1][i+1],v[1][i]);
				t=min(t,solve(c+1));
				swap(v[1][i+1],v[1][i]);
			}
			swap(v[1][i],v[0][i]);
			t=min(t,solve(c+1));
			swap(v[1][i],v[0][i]);
		}
	}
	return ma[v]=t;
}


int main(){
	initvv(puz,2,4);
	rep(i,4){
		// cout<<i<<endl;
		puz[0][i]=i;
		puz[1][i]=i+4;
	}
	// rep(i,2){
		// rep(j,4){
			// cout<<puz[i][j]<<endl;
		// }
	// }
	// vector<vector<int> > v;
	initvv(v,2,4);
	while(cin>>v[0][0]){
		rep(i,3){
			cin>>v[0][i+1];
		}
		rep(i,4) cin>>v[1][i];
		// rep(i,2){
			// rep(j,4){
				// cout<<puz[i][j]<<" ";
			// }
			// cout<<endl;
		// }
		// cout<<"*************\n";
		cout<<solve(0)<<endl;
	}
}