#include <bits/stdc++.h>
using namespace std;
int trie[2][15000000], ind = 1, a[300000], k[2][15000000];
void add(int p) {
  int now = 0, zn;
  for (int i = 29; i >= 0; i--) {
    zn = min(1, (1 << i) & p);
    if (!trie[zn][now]) {
      trie[zn][now] = ind++;
    }
    k[zn][now] += 1;
    now = trie[zn][now];
  }
}
int get_ans(int p) {
  int res = 0, now = 0, zn;
  for (int i = 29; i >= 0; i--) {
    zn = min((1 << i) & p, 1);
    if (k[zn][now]) {
      k[zn][now] -= 1;
      now = trie[zn][now];
      res += ((1 << i) & p);
    } else {
      k[(zn + 1) % 2][now] -= 1;
      now = trie[(zn + 1) % 2][now];
      if (zn == 0) {
        res += (1 << i);
      }
    }
  }
  return res;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  int n, p;
  cin >> n;
  for (int i = 0; i < n; i++) {
    cin >> a[i];
  }
  for (int i = 0; i < n; i++) {
    cin >> p;
    add(p);
  }
  for (int i = 0; i < n; i++) {
    cout << (a[i] ^ get_ans(a[i])) << ' ';
  }
  return 0;
}
