#include <bits/stdc++.h>   using namespace std;   int dirx[] = {1, 0, -1, 0};   int diry[] = {0, 1, 0, -1};   int a;   vector<int> graph[100005];   int dist[100005];   bool visit[100005];   int cnt = 0;   bool flag = false;   int dfs(int u, int par) {     visit[u] = true;     for (int i = 0; i < graph[u].size(); i++) {       if (!visit[graph[u][i]]) dist[u] += dfs(graph[u][i], u);     }     if (dist[u] != 0 && (dist[u] + 1) % 2 == 0) {       cnt++;       dist[u] = 0;       return 0;     } else       return 1;   }   int main() {     scanf( %d , &a);     int x, y;     int start = 0;     for (int i = 0; i < a - 1; i++) {       scanf( %d %d , &x, &y);       start = x;       graph[x].push_back(y);       graph[y].push_back(x);     }     if (a % 2 == 1) {       cout << -1 << endl;       return 0;     }     dfs(start, 0);     cout << cnt - 1 << endl;   }   