//考完试才做出来,自己写了几个例子试了一下是对的,不知道有没有更高效的思路
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Scanner;
import java.util.Set;
public class Main {
static class Result{
int back;
int notback;
public Result(int back,int notback){
this.back = back;
this.notback = notback;
}
}
static class Pair{
int p1,p2;
public boolean contains(int s){
return p1==s||p2==s;
}
public Pair(int p1,int p2){
this.p1 = p1;
this.p2 = p2;
}
public int another(int p){
if (p==p1){
return p2;
}else return p1;
}
}
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int n = s.nextInt();
s.nextLine();
Set<Pair> pool = new HashSet<Pair>();
for (int i=0;i<n-1;i++){
String[] temp = s.nextLine().split(" ");
pool.add(new Pair(Integer.parseInt(temp[0]),Integer.parseInt(temp[1])));
}
//System.out.println(pool.size());
System.out.println(func(1,pool).notback);
}
private static Result func(int i, Set<Pair> pool) {
Set<Pair> connted = connected(pool,i);
if (connted.size()==0){
//System.out.println(i+","+"0,0");
return new Result(0,0);
}
pool.removeAll(connted);
int m =0,n=0;
List<Result> results = new ArrayList<Result>();
for (Pair p:connted){
int v = p.another(i);
Result r = func(v,pool);
results.add(r);
}
int max = 0;
for (Result result:results){
m += result.back + 2;
if (result.back-result.notback>max){
max = result.back-result.notback;
}
}
n = m -max -1;
//System.out.println(i+","+m+","+n);
return new Result(m,n);
}
private static Set<Pair> connected(Set<Pair> pool,int target){
Set<Pair> ret = new HashSet<Pair>();
for (Pair p:pool){
if (p.contains(target)){
ret.add(p);
}
}
return ret;
}
}