#include <bits/stdc++.h>
using namespace std;
const long long N = 1e5 + 7;
vector<long long> adj[N];
long long child[N];
long long Rank[N];
bool vs[N];
long long cnt = 1;
void dfs(long long e, long long p) {
  child[e] = 1;
  for (auto q : adj[e]) {
    if (q != p && !vs[q]) {
      dfs(q, e);
      child[e] += child[q];
    }
  }
}
long long findcen(long long e, long long p, long long size) {
  for (auto q : adj[e]) {
    if (q != p && child[q] > size / 2 && !vs[q]) {
      return findcen(q, e, size);
    }
  }
  return e;
}
void centroid(int x) {
  dfs(x, x);
  long long y = findcen(x, x, child[x]);
  Rank[y] = cnt;
  cnt++;
  vs[y] = true;
  for (auto q : adj[y]) {
    if (!vs[q]) {
      centroid(q);
    }
  }
  cnt--;
}
signed main() {
  long long n;
  cin >> n;
  for (int i = 1; i < n; i++) {
    long long a, b;
    cin >> a >> b;
    adj[a].push_back(b);
    adj[b].push_back(a);
  }
  centroid(1);
  for (int i = 1; i <= n; i++) {
    printf("%c ", (char)Rank[i] - 1 + 'A');
  }
}
