#include <bits/stdc++.h>
int tot = 1, num[10000001], tree[10000001][2];
int g[300005];
void _add(int x) {
  int p = 1, a, i;
  for (i = 30; i >= 0; i--) {
    num[p]++;
    if ((1 << i) & x)
      a = 1;
    else
      a = 0;
    if (!tree[p][a]) {
      tree[p][a] = ++tot;
      p = tot;
    } else
      p = tree[p][a];
  }
  num[p]++;
}
int _ask(int x) {
  int p = 1, i, a, ans = 0;
  for (i = 30; i >= 0; i--) {
    num[p]--;
    if ((1 << i) & x)
      a = 1;
    else
      a = 0;
    if (tree[p][a] && num[tree[p][a]])
      p = tree[p][a];
    else {
      p = tree[p][a ^ 1];
      ans += (1 << i);
    }
  }
  num[p]--;
  return ans;
}
int main() {
  int n, i, x, ans;
  scanf("%d", &n);
  for (i = 1; i <= n; i++) scanf("%d", &g[i]);
  for (i = 1; i <= n; i++) {
    scanf("%d", &x);
    _add(x);
  }
  for (i = 1; i <= n; i++) {
    ans = _ask(g[i]);
    printf("%d ", ans);
  }
  return 0;
}
