#include <bits/stdc++.h>
using namespace std;
int n, a, b, ans[100100], used[100100];
vector<int> adj[100100];
bool con(int a, int b) {
  int i;
  if (a == 0 || b == 0) return true;
  for (i = 0; i < 4; i++)
    if (adj[a][i] == b) return true;
  return false;
}
void dfs(int p) {
  int i;
  if (p == n) {
    if (!(con(ans[n - 1], ans[1]) && con(ans[n], ans[1]) &&
          con(ans[n], ans[2])))
      return;
    for (i = 1; i <= n; i++) printf("%d ", ans[i]);
    exit(0);
  }
  for (i = 0; i < 4; i++) {
    ans[p + 1] = adj[ans[p]][i];
    if (used[ans[p + 1]] || !con(ans[p + 1], ans[p - 1])) continue;
    used[ans[p + 1]] = 1;
    dfs(p + 1);
    used[ans[p + 1]] = 0;
  }
}
int main() {
  int i;
  scanf("%d", &n);
  for (i = 0; i < 2 * n; i++) {
    scanf("%d%d", &a, &b);
    adj[a].push_back(b);
    adj[b].push_back(a);
  }
  for (i = 1; i <= n; i++) {
    if (adj[i].size() != 4) {
      puts("-1");
      return 0;
    }
  }
  used[1] = 1;
  ans[1] = 1;
  dfs(1);
  puts("-1");
  return 0;
}
