#include <iostream>
#include <vector>
#include <map>
#include <set>
#include <queue>
#include <algorithm>
#include <string>
#include <cmath>
#include <cstdio>
#include <iomanip>
#include <fstream>
#include <cassert>
#include <cstring>
#include <unordered_set>
#include <unordered_map>
#include <numeric>
#include <ctime>
#include <bitset>
#include <complex>
#include <chrono>
#include <random>
#include <functional>

using namespace std;

const int N = 1e5 + 7;

int dp[N];
vector<int> g[N];

void dfs(int cur, int p) {
	int c = 0;
	for (auto t : g[cur]) {
		if (t != p) {
			dfs(t, cur);
			dp[cur] += dp[t];
			if (!dp[t]) {
				c++;
			}
		}
	}
	dp[cur] += max(0, c - 1);
}

signed main() {
	ios_base::sync_with_stdio(false);
	cin.tie(0);	

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