#include <bits/stdc++.h>
#define INF 10000
#define pb push_back
using namespace std;
const int N = 105;
int n, x, y, sum;
vector<int> Edge[N];
int dp[N][3];
bool vis[N];
void dfs(int x) {
vis[x] = true, sum = 0;
vector<int> son;
for (int i : Edge[x]) {
if (!vis[i]) {
son.pb(i);
dfs(i);
sum += dp[i][0];
}
}
if (son.size() == 0) {
dp[x][0] = dp[x][2] = INF;
dp[x][1] = 0;
return;
}
dp[x][0] = dp[x][2] = INF;
dp[x][1] = min(INF, sum);
for (int i : son) {
dp[x][2] = min(dp[x][2], sum - dp[i][0] + min(dp[i][1], dp[i][2]));
dp[x][0] = min(dp[x][0], sum - dp[i][0] + dp[i][2] + 1);
}
for (int i : son) {
for (int j : son) {
if (i == j) continue;
dp[x][0] = min(dp[x][0], sum - dp[i][0] - dp[j][0] + min(dp[i][1], dp[i][2]) + min(dp[j][1], dp[j][2]) + 1);
}
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> n;
for (int i = 1; i < n; i++) {
cin >> x >> y;
Edge[x].pb(y);
Edge[y].pb(x);
}
dfs(1);
if (dp[1][0] >= INF) {
cout << dp[1][0] << '\n';
} else {
cout << "-1\n";
}
}