#include <bits/stdc++.h>
using namespace std;
vector<int> g[200100];
int c[200100], f[200100], len[200100], u, v, n, ans, root, cnt;
int Dfs(int x, int fa) {
  set<int> st;
  for (int i = 0; i < g[x].size(); i++) {
    int v = g[x][i];
    if (v == fa) continue;
    int tmp = Dfs(v, x);
    if (!~tmp) return -1;
    st.insert(tmp + 1);
  }
  if (st.size() == 0) return 0;
  if (st.size() == 1) return *st.begin();
  if (st.size() == 2 && !fa) return *st.begin() + *st.rbegin();
  if (st.size() == 2) {
    cnt++;
    root = x;
    return -1;
  }
  if (st.size() > 2) return -1;
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i < n; i++) {
    scanf("%d%d", &u, &v);
    g[u].push_back(v);
    g[v].push_back(u);
  }
  int ans = Dfs(1, 0);
  if (cnt > 1)
    printf("-1");
  else {
    if (!~ans && root) ans = Dfs(root, 0);
    while (ans % 2 == 0) ans /= 2;
    if (!~ans)
      printf("-1");
    else
      printf("%d\n", ans);
  }
  return 0;
}
