#include <bits/stdc++.h>
using namespace std;

const int MAXN = 1e5 + 10;

int u, v;
long long n, r = -1;
vector<int> adj[MAXN];
long long dp[MAXN][2];

void dfs(int root, int par = -1){
    long long s = 0, mx = 0;
    for(auto y: adj[root])
        if(y != par){
            dfs(y, root);
            s += dp[y][1];
            mx = max(mx, dp[y][1] - dp[y][0]);
        }
    dp[root][1] = s - mx;
    dp[root][0] = s - mx;
    if(s - mx == 0)
        dp[root][1] = 1;
    return;
}

int main(){
    cin >> n;
    for(int i = 0; i < n - 1; i++){
        cin >> u >> v;
        adj[u].push_back(v);
        adj[v].push_back(u);
    }
    
    for(int i = 0; i < n; i++)
        if(adj[i].size() >= 3)
            r = i;
    
    if(!(r ^ -1))
        return cout << 1 << '\n', 0;
    
    dfs(r);
    cout << dp[r][1] << '\n';
    return 0;
}
