#include <bits/stdc++.h>
using namespace std;
int a[300010], p[300010], d[32];
int f[6000010][3], cnt = 1, ans;
void insert(int x, int y) {
  f[x][2]++;
  if (y > 30) return;
  if (!f[x][d[y]])
    f[x][d[y]] = ++cnt, insert(cnt, y + 1);
  else
    insert(f[x][d[y]], y + 1);
}
void dg(int x, int y) {
  f[x][2]--;
  if (y > 30) {
    printf("%d ", ans);
    return;
  }
  if (f[x][d[y]] && f[f[x][d[y]]][2])
    dg(f[x][d[y]], y + 1);
  else {
    ans = ans + (1 << (30 - y));
    dg(f[x][1 - d[y]], y + 1);
  }
}
int main() {
  int n, i, j, k;
  scanf("%d", &n);
  for (i = 1; i <= n; i++) scanf("%d", &a[i]);
  for (i = 1; i <= n; i++) {
    scanf("%d", &p[i]);
    j = p[i];
    d[0] = 30;
    while (j) {
      d[d[0]--] = j % 2;
      j /= 2;
    }
    for (k = d[0]; k > 0; k--) d[k] = 0;
    insert(1, 1);
  }
  for (i = 1; i <= n; i++) {
    j = a[i];
    d[0] = 30;
    ans = 0;
    while (j) {
      d[d[0]--] = j % 2;
      j /= 2;
    }
    for (k = d[0]; k > 0; k--) d[k] = 0;
    dg(1, 1);
  }
  return 0;
}
