#include <bits/stdc++.h>
using namespace std;
#define maxsize 100100
int n;
vector<int> edges[maxsize];
vector<int> vertex_cover(maxsize, 0);
vector<int> visited(maxsize, 0);
void dfs(int current, int prev)
{
visited[current] = 1;
// leaf node, add its parent to vertex cover
if(edges[current].size() == 1 and edges[current][0] == prev)
{
vertex_cover[prev] = 1;
return;
}
// internal node
for(auto u: edges[current])
{
if(!visited[u])
dfs(u, current);
}
// check if any of the children are marked already
int flag = 0;
for(auto u: edges[current])
{
if(u != prev and vertex_cover[u] == 1)
flag = 1;
}
// none of its children are marked, mark the current node
if(flag == 0)
vertex_cover[current] = 1;
}
int main() {
// Fast I/O
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int i, u, v;
cin>>n;
for(i=1;i<n;i++)
{
cin>>u>>v;
edges[u].push_back(v);
edges[v].push_back(u);
}
dfs(1, 0);
int count = 0;
for(i=1;i<=n;++i)
{
if(vertex_cover[i] == 1)
count++;
// cout<<i<<" "<<vertex_cover[i]<<"\n";
}
cout<<count<<"\n";
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgbWF4c2l6ZSAxMDAxMDAKaW50IG47CnZlY3RvcjxpbnQ+IGVkZ2VzW21heHNpemVdOwp2ZWN0b3I8aW50PiB2ZXJ0ZXhfY292ZXIobWF4c2l6ZSwgMCk7CnZlY3RvcjxpbnQ+IHZpc2l0ZWQobWF4c2l6ZSwgMCk7Cgp2b2lkIGRmcyhpbnQgY3VycmVudCwgaW50IHByZXYpCnsKCXZpc2l0ZWRbY3VycmVudF0gPSAxOwoJLy8gbGVhZiBub2RlLCBhZGQgaXRzIHBhcmVudCB0byB2ZXJ0ZXggY292ZXIKCWlmKGVkZ2VzW2N1cnJlbnRdLnNpemUoKSA9PSAxIGFuZCBlZGdlc1tjdXJyZW50XVswXSA9PSBwcmV2KQoJewoJCXZlcnRleF9jb3ZlcltwcmV2XSA9IDE7CgkJcmV0dXJuOwoJfQoJLy8gaW50ZXJuYWwgbm9kZQoJZm9yKGF1dG8gdTogZWRnZXNbY3VycmVudF0pCgl7CgkJaWYoIXZpc2l0ZWRbdV0pCgkJCWRmcyh1LCBjdXJyZW50KTsKCX0KCS8vIGNoZWNrIGlmIGFueSBvZiB0aGUgY2hpbGRyZW4gYXJlIG1hcmtlZCBhbHJlYWR5CglpbnQgZmxhZyA9IDA7Cglmb3IoYXV0byB1OiBlZGdlc1tjdXJyZW50XSkKCXsKCQlpZih1ICE9IHByZXYgYW5kIHZlcnRleF9jb3Zlclt1XSA9PSAxKQoJCQlmbGFnID0gMTsKCX0KCS8vIG5vbmUgb2YgaXRzIGNoaWxkcmVuIGFyZSBtYXJrZWQsIG1hcmsgdGhlIGN1cnJlbnQgbm9kZQoJaWYoZmxhZyA9PSAwKQoJCXZlcnRleF9jb3ZlcltjdXJyZW50XSA9IDE7Cn0KaW50IG1haW4oKSB7CgkvLyBGYXN0IEkvTwoJaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKE5VTEwpOwogICAgCiAgICBpbnQgaSwgdSwgdjsKICAgIGNpbj4+bjsKICAgIGZvcihpPTE7aTxuO2krKykKICAgIHsKICAgIAljaW4+PnU+PnY7CiAgICAJZWRnZXNbdV0ucHVzaF9iYWNrKHYpOwogICAgCWVkZ2VzW3ZdLnB1c2hfYmFjayh1KTsKICAgIH0JCiAgICBkZnMoMSwgMCk7CiAgICBpbnQgY291bnQgPSAwOwogICAgZm9yKGk9MTtpPD1uOysraSkKICAgIHsKICAgIAlpZih2ZXJ0ZXhfY292ZXJbaV0gPT0gMSkKICAgIAkJY291bnQrKzsKICAgIAkvLyBjb3V0PDxpPDwiICI8PHZlcnRleF9jb3ZlcltpXTw8IlxuIjsKICAgIH0KICAgIGNvdXQ8PGNvdW50PDwiXG4iOwoJcmV0dXJuIDA7Cn0=