#include <bits/stdc++.h>
using namespace std;
int solve();
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  solve();
}
const int INF = 1e9 + 7;
int solve() {
  int n;
  cin >> n;
  vector<vector<int> > g(n);
  for (int i = 1; i < n; ++i) {
    int x, y;
    cin >> x >> y;
    --x, --y;
    g[x].push_back(y);
    g[y].push_back(x);
  }
  vector<vector<int> > dp(3, vector<int>(n));
  function<void(int, int)> dfs = [&](int u, int p) {
    for (int to : g[u]) {
      if (to != p) dfs(to, u);
    }
    dp[0][u] = 1;
    for (int to : g[u]) {
      if (to == p) continue;
      dp[0][u] += min(dp[0][to], min(dp[1][to], dp[2][to]));
    }
    if (p == 0)
      dp[1][u] = INF;
    else {
      if (!g[u].empty()) {
        int sum = 0;
        for (int to : g[u]) {
          if (to == p) continue;
          sum += min(dp[0][to], dp[1][to]);
        }
        dp[1][u] = INF;
        for (int to : g[u]) {
          if (to == p) continue;
          dp[1][u] = min(dp[1][u], sum - min(dp[0][to], dp[1][to]) + dp[0][to]);
        }
      } else {
        dp[1][u] = INF;
      }
    }
    if (p == 0) {
      dp[2][u] = INF;
    } else
      for (int to : g[u]) {
        if (to == p) continue;
        dp[2][u] += min(dp[0][to], dp[1][to]);
      }
  };
  dfs(0, -1);
  printf("%d\n", dp[0][0] - 1 - g[0].size());
  return 0;
}
