func_code_string: #include <bits/stdc++.h>   using namespace std;   vector<int> g[200005];   queue<pair<int, int> > q;   int deg[200005], a, n;   bool v[200005];   set<int> s[200005];   int main() {     scanf( %d , &n);     for (int i = 1; i < n; i++) {       int a, b;       scanf( %d%d , &a, &b);       g[a].push_back(b);       g[b].push_back(a);       deg[a]++, deg[b]++;     }     for (int i = 1; i <= n; i++)       if (deg[i] == 1) q.push(pair<int, int>(i, 0));     int c = 0, lst = -1;     while (!q.empty()) {       int x = q.front().first, d = q.front().second;       q.pop();       v[x] = true;       lst = x, c++;       for (auto y : g[x]) {         if (v[y]) continue;         deg[y]--;         s[y].insert(d + 1);         if (deg[y] == 1 and s[y].size() == 1) q.push(pair<int, int>(y, d + 1));       }     }     if (c < n - 1)       a = -1;     else {       if (c == n - 1)         for (int i = 1; i <= n; i++)           if (!v[i]) lst = i;       if (s[lst].size() > 2)         a = -1;       else {         for (auto e : s[lst]) a += e;       }     }     while (a % 2 == 0) a /= 2;     printf( %d n , a);   }   