#include <bits/stdc++.h>
using namespace std;
vector<int> g[100001]; //To store graph(tree)
int ans[100001]; //DP Table
int dyn(int root){
//If answer is pretabulated return tabulated value
if( ans[root]!=-1 ) return ans[root];
//Answer of current sub-tree if we take its root into the vertex cover set :-
int ans_inc=1; // 1 for the root
for(int x=0;x<g[root].size();x++) ans_inc+=dyn(g[root][x]); //Adding answers of all its children
//Answer of current sub-tree if we don't take its root into the vertex cover set:-
int ans_exc=g[root].size(); //g[root].size() for no.of children
for(int x=0;x<g[root].size();x++){
int child=g[root][x]; //for each child of root
for(int y=0;y<g[child].size();y++) //add answers of all its children(i.e grandchildren of root)
ans_exc+=dyn(g[child][y]);
}
//return minimum of both cases
return ans[root]=min(ans_inc,ans_exc);
}
int main(void){
int n;
scanf("%d",&n);
for(int i=1;i<n+1;i++) ans[i]=-1;
int root;
for(int i=0;i<n-1;i++){
int a;
scanf("%d",&a);
int b;
scanf("%d",&b);
if( i==0 or b==root ) root=a;
g[a].push_back(b);
}
printf("%d",dyn(root));
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnZlY3RvcjxpbnQ+IGdbMTAwMDAxXTsgIC8vVG8gc3RvcmUgZ3JhcGgodHJlZSkKaW50IGFuc1sxMDAwMDFdOyAgLy9EUCBUYWJsZQoKaW50IGR5bihpbnQgcm9vdCl7CgkvL0lmIGFuc3dlciBpcyBwcmV0YWJ1bGF0ZWQgcmV0dXJuIHRhYnVsYXRlZCB2YWx1ZQoJaWYoIGFuc1tyb290XSE9LTEgKSByZXR1cm4gYW5zW3Jvb3RdOwkKCQoJLy9BbnN3ZXIgb2YgY3VycmVudCBzdWItdHJlZSBpZiB3ZSB0YWtlIGl0cyByb290IGludG8gdGhlIHZlcnRleCBjb3ZlciBzZXQgOi0KCWludCBhbnNfaW5jPTE7CS8vIDEgIGZvciB0aGUgcm9vdAoJZm9yKGludCB4PTA7eDxnW3Jvb3RdLnNpemUoKTt4KyspIGFuc19pbmMrPWR5bihnW3Jvb3RdW3hdKTsJLy9BZGRpbmcgYW5zd2VycyBvZiBhbGwgaXRzIGNoaWxkcmVuCiAKCS8vQW5zd2VyIG9mIGN1cnJlbnQgc3ViLXRyZWUgaWYgd2UgZG9uJ3QgdGFrZSBpdHMgcm9vdCBpbnRvIHRoZSB2ZXJ0ZXggY292ZXIgc2V0Oi0KCWludCBhbnNfZXhjPWdbcm9vdF0uc2l6ZSgpOyAvL2dbcm9vdF0uc2l6ZSgpIGZvciBuby5vZiBjaGlsZHJlbgoJZm9yKGludCB4PTA7eDxnW3Jvb3RdLnNpemUoKTt4KyspewoJCWludCBjaGlsZD1nW3Jvb3RdW3hdOyAvL2ZvciBlYWNoIGNoaWxkIG9mIHJvb3QKCQlmb3IoaW50IHk9MDt5PGdbY2hpbGRdLnNpemUoKTt5KyspIC8vYWRkIGFuc3dlcnMgb2YgYWxsIGl0cyBjaGlsZHJlbihpLmUgZ3JhbmRjaGlsZHJlbiBvZiByb290KQoJCQlhbnNfZXhjKz1keW4oZ1tjaGlsZF1beV0pOwoJfQoJCgkvL3JldHVybiBtaW5pbXVtIG9mIGJvdGggY2FzZXMKCXJldHVybiBhbnNbcm9vdF09bWluKGFuc19pbmMsYW5zX2V4Yyk7Cn0KCmludCBtYWluKHZvaWQpewoJaW50IG47IAoJc2NhbmYoIiVkIiwmbik7Cglmb3IoaW50IGk9MTtpPG4rMTtpKyspIGFuc1tpXT0tMTsKCWludCByb290OwoJZm9yKGludCBpPTA7aTxuLTE7aSsrKXsKCQlpbnQgYTsgCgkJc2NhbmYoIiVkIiwmYSk7CgkJaW50IGI7IAoJCXNjYW5mKCIlZCIsJmIpOwoJCWlmKCBpPT0wIG9yIGI9PXJvb3QgKSByb290PWE7CgkJZ1thXS5wdXNoX2JhY2soYik7Cgl9CglwcmludGYoIiVkIixkeW4ocm9vdCkpOwp9