#include <bits/stdc++.h>
using namespace std;
const int N_MAX = 200002;
int t;
int n;
int a[N_MAX], b[N_MAX];
int cnt[N_MAX];
pair<int, bool> x[N_MAX], y[N_MAX];
vector<int> edges[N_MAX][2];
bool color[N_MAX];
bool visited[N_MAX];
vector<int> aux;
void dfs(int u) {
  aux.push_back(u);
  visited[u] = true;
  for (int v : edges[u][0])
    if (visited[v] == false) {
      color[v] = color[u];
      dfs(v);
    }
  for (int v : edges[u][1])
    if (visited[v] == false) {
      color[v] = !color[u];
      dfs(v);
    }
}
void freset() {
  for (int i = 1; i <= n; i++) {
    edges[i][0].clear();
    edges[i][1].clear();
  }
  memset(cnt, 0, sizeof(cnt));
  for (int i = 1; i <= n; i++) x[i] = y[i] = make_pair(0, 0);
  memset(visited, false, sizeof(visited));
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cin >> t;
  while (t--) {
    cin >> n;
    for (int i = 1; i <= n; i++) {
      cin >> a[i];
      cnt[a[i]]++;
    }
    for (int i = 1; i <= n; i++) {
      cin >> b[i];
      cnt[b[i]]++;
    }
    bool ok = true;
    for (int i = 1; i <= n; i++)
      if (cnt[i] != 2) ok = false;
    if (ok == false) {
      cout << "-1\n";
      freset();
      continue;
    }
    for (int i = 1; i <= n; i++) {
      if (x[a[i]] == make_pair(0, false))
        x[a[i]] = make_pair(i, false);
      else
        y[a[i]] = make_pair(i, false);
      if (x[b[i]] == make_pair(0, false))
        x[b[i]] = make_pair(i, true);
      else
        y[b[i]] = make_pair(i, true);
    }
    for (int i = 1; i <= n; i++)
      if (x[i].first != y[i].first) {
        bool b = !(x[i].second ^ y[i].second);
        edges[x[i].first][b].push_back(y[i].first);
        edges[y[i].first][b].push_back(x[i].first);
      }
    int ans = 0;
    for (int i = 1; i <= n; i++)
      if (visited[i] == false) {
        dfs(i);
        int cnt[2];
        cnt[0] = cnt[1] = 0;
        for (int u : aux) cnt[color[u]]++;
        if (cnt[0] < cnt[1]) {
          for (int u : aux) color[u] ^= 1;
        }
        ans += min(cnt[0], cnt[1]);
        aux.clear();
      }
    for (int i = 1; i <= n; i++) {
      for (int j : edges[i][0])
        if ((color[i] ^ color[j]) != 0) ok = false;
      for (int j : edges[i][1])
        if ((color[i] ^ color[j]) != 1) ok = false;
    }
    if (ok == false) {
      cout << "-1\n";
      freset();
      continue;
    }
    cout << ans << "\n";
    for (int i = 1; i <= n; i++)
      if (color[i] == true) cout << i << " ";
    cout << "\n";
    freset();
  }
  return 0;
}
