#include <bits/stdc++.h>
using namespace std;
template <class T>
T two(T x) {
  return 1 << x;
}
template <class T>
void Min(T &x, T y) {
  if (y < x) x = y;
}
template <class T>
void Max(T &x, T y) {
  if (y > x) x = y;
}
const int maxn = 100010;
const int mod = 1000000007;
vector<int> edge[maxn];
int ans[maxn];
bool vis[maxn];
bool solve(int n) {
  int a[5];
  for (int i = 1; i <= n; i++)
    if (edge[i].size() != 4) return false;
  sort(edge[1].begin(), edge[1].end());
  for (int i = 0; i < 4; i++) a[i] = edge[1][i];
  do {
    memset(vis, false, sizeof(vis));
    ans[n - 1] = a[0];
    ans[n] = a[1];
    ans[2] = a[2];
    ans[3] = a[3];
    ans[1] = 1;
    int cnt = 0;
    for (int i = 0; i < 4; i++) {
      int tmp = edge[ans[2]][i];
      if (tmp == ans[1] || tmp == ans[3] || tmp == ans[n])
        cnt++;
      else
        ans[4] = tmp;
    }
    bool flag = true;
    if (cnt != 3)
      flag = false;
    else {
      cnt = 0;
      for (int i = 0; i < 4; i++) {
        int tmp = edge[ans[n]][i];
        if (tmp == ans[1] || tmp == ans[n - 1] || tmp == ans[2]) cnt++;
      }
      if (cnt != 3)
        flag = false;
      else {
        for (int i = 5; i <= n - 2; i++) {
          cnt = 0;
          for (int j = 0; j < 4; j++) {
            int tmp = edge[ans[i - 2]][j];
            if (tmp == ans[i - 3] || tmp == ans[i - 1] || tmp == ans[i - 4])
              cnt++;
            else
              ans[i] = tmp;
          }
          if (cnt != 3) flag = false;
        }
        cnt = 0;
        for (int i = 0; i < 4; i++) {
          int tmp = edge[ans[n - 2]][i];
          if (tmp == ans[n - 1] || tmp == ans[n - 3] || tmp == ans[n] ||
              tmp == ans[n - 4])
            cnt++;
        }
        if (cnt != 4) flag = false;
      }
    }
    if (flag) {
      for (int i = 1; i <= n; i++) vis[ans[i]] = true;
      for (int i = 1; i <= n; i++)
        if (!vis[i]) flag = false;
      if (flag) return true;
    }
  } while (next_permutation(a, a + 4));
  return false;
}
int main() {
  int n, a, b;
  cin >> n;
  for (int i = 0; i < 2 * n; i++) {
    cin >> a >> b;
    edge[a].push_back(b);
    edge[b].push_back(a);
  }
  if (solve(n)) {
    for (int i = 1; i <= n; i++) printf("%d ", ans[i]);
  } else {
    return puts("-1"), 0;
  }
}
