#include <bits/stdc++.h>
using namespace std;
int a[1000000], b[1000000];
vector<vector<int> > adjlist;
int main() {
  int n;
  cin >> n;
  adjlist.assign(n + 1, vector<int>());
  map<int, int> mp;
  for (int i = 0; i < 2 * n; i++) {
    cin >> a[i] >> b[i];
    adjlist[a[i]].push_back(b[i]);
    adjlist[b[i]].push_back(a[i]);
    mp[a[i]]++;
    mp[b[i]]++;
  }
  for (auto x : mp) {
    if (x.second != 4) {
      cout << -1;
      return 0;
    }
  }
  for (int i = 0; i < adjlist[1].size(); i++) {
    int v = adjlist[1][i];
    for (int j = 0; j < adjlist[v].size(); j++) {
      int u = adjlist[v][j];
      if (u == 1) continue;
      vector<int> visited;
      visited.assign(n + 1, 0);
      int s = u, pr1 = v, pr2 = 1;
      vector<int> vi;
      vi.push_back(1);
      vi.push_back(v);
      visited[1] = 1;
      visited[v] = 1;
      while (visited[s] == 0) {
        visited[s] = 1;
        vi.push_back(s);
        map<int, int> f;
        for (int k = 0; k < adjlist[s].size(); k++) {
          int y = adjlist[s][k];
          if (visited[y] == 0) f[y]++;
        }
        for (int k = 0; k < adjlist[pr1].size(); k++) {
          int y = adjlist[pr1][k];
          if (visited[y] == 0) f[y]++;
        }
        for (auto x : f) {
          if (x.second == 2) {
            pr2 = pr1;
            pr1 = s;
            s = x.first;
            break;
          }
        }
      }
      if (vi.size() == n) {
        for (int k = 0; k < vi.size(); k++) cout << vi[k] << " ";
        return 0;
      }
    }
  }
  cout << -1;
  return 0;
}
