#include <bits/stdc++.h>
using namespace std;
long long n, sbt[100069], sq[100069];
vector<long long> al[100069];
bitset<100069> vtd;
pair<long long, long long> mne;
void bd(long long x) {
  long long i, sz = al[x].size(), l;
  vtd[x] = 1;
  sbt[x] = 1;
  for (i = 0; i < sz; i++) {
    l = al[x][i];
    if (!sq[l] && !vtd[l]) {
      bd(l);
      sbt[x] += sbt[l];
    }
  }
}
void dfs(long long x, long long w) {
  long long i, sz = al[x].size(), l, mx = w;
  vtd[x] = 1;
  for (i = 0; i < sz; i++) {
    l = al[x][i];
    if (!sq[l] && !vtd[l]) {
      dfs(l, w + sbt[x] - sbt[l]);
      mx = max(mx, sbt[l]);
    }
  }
  mne = min(mne, {mx, x});
}
int main() {
  long long i, j, k, l;
  scanf("%lld", &n);
  for (i = 0; i < n - 1; i++) {
    scanf("%lld%lld", &k, &l);
    al[k].push_back(l);
    al[l].push_back(k);
  }
  for (i = 1; i <= 26; i++) {
    vtd.reset();
    for (j = 1; j <= n; j++) {
      if (!sq[j] && !vtd[j]) {
        bd(j);
      }
    }
    vtd.reset();
    for (j = 1; j <= n; j++) {
      if (!sq[j] && !vtd[j]) {
        mne = {1e18, -1};
        dfs(j, 0);
        sq[mne.second] = i;
      }
    }
  }
  for (i = 1; i <= n; i++) {
    printf("%c%c", (char)sq[i] + 'A' - 1, " \n"[i == n]);
  }
}
