#include <bits/stdc++.h>   using namespace std;   template <typename T>   void prn(T first) {     cout << first <<   n ;   }   template <typename T, typename... Args>   void prn(T first, Args... args) {     cout << first <<    ;     prn(args...);   }   vector<long long> adj[200004];   vector<long long> parent(200004, 0), dist(200004, 0);   void dfs(long long u, long long p = 0, long long d = 0) {     parent[u] = p;     dist[u] = d;     for (long long v : adj[u]) {       if (v == p) continue;       dfs(v, u, dist[u] + 1);     }   }   int main() {     ios_base::sync_with_stdio(false);     cin.tie(0);     cout.tie(0);     ;     long long i, j, t, n, u, v;     cin >> n;     for (i = 0; i < n - 1; i++) {       cin >> u >> v;       adj[u].push_back(v);       adj[v].push_back(u);     }     dfs(1);     set<pair<long long, long long> > st;     for (i = 1; i < n + 1; i++) {       if (dist[i] > 2) {         st.insert({-dist[i], i});       }     }     long long res = 0;     while (!st.empty()) {       u = st.begin()->second;       u = parent[u];       res++;       auto it = st.find({-dist[u], u});       if (it != st.end()) {         st.erase(it);       }       for (long long child : adj[u]) {         it = st.find({-dist[child], child});         if (it != st.end()) {           st.erase(it);         }       }     }     cout << res;     return 0;   }   