#include<cstdio>
#include<vector>
#include<algorithm>

using namespace std;

vector<int> G[500500];
int N;

long long dp1[500500],dp2[500500];
int sz[500500];
int dep[500500];

int main(){
	scanf("%d",&N);
	for(int i=0;i<N-1;i++){
		int a,b;
		scanf("%d%d",&a,&b);
		G[i+1].push_back(a);
		G[i+1].push_back(b);
	}
	dep[1]=0;
	for(int v=1;v<N;v++){
		for(int i=0;i<2;i++){
			if(G[v][i]==N) continue;
			dep[G[v][i]]=dep[v]+1;
		}
	}
	dp1[N]=0;
	dp2[N]=0;
	sz[N]=1;
	for(int v=N-1;v>=1;v--){
		sz[v]=0;
		dp1[v]=0;
		for(int i=0;i<2;i++){
			sz[v]+=sz[G[v][i]];
			dp1[v]+=dp1[G[v][i]];
			dp1[v]+=sz[G[v][i]];
		}
		dp2[v]=dp1[v];
		for(int i=0;i<2;i++){
			int j=i^1;
			long long tmp=0;
			tmp+=sz[G[v][i]];
			tmp+=dp1[G[v][i]];
			tmp+=1;
			tmp+=dp2[G[v][j]];
			dp2[v]=min(dp2[v],tmp);
		}
		long long tmp=0;
		for(int i=0;i<2;i++){
			tmp+=dp2[G[v][i]];
		}
		tmp+=dep[v]+2;
		dp2[v]=min(dp2[v],tmp);
	}
	printf("%lld\n",dp2[1]);
	return 0;
}