#include <bits/stdc++.h>
int const N = 555;
bool e[N][N];
int q[N];
int color[N];
int main() {
  int n, m;
  scanf("%d%d", &n, &m);
  for (int i = 0; i < m; ++i) {
    int a, b;
    scanf("%d%d", &a, &b);
    --a, --b;
    e[a][b] = e[b][a] = true;
  }
  std::vector<int> sizes;
  int last = 2;
  for (int i = 0; i < n; ++i) {
    if (color[i] == 0) {
      color[i] = last;
      last += 2;
      int tail = 0;
      q[tail++] = i;
      for (int h = 0; h < tail; ++h) {
        int v = q[h];
        for (int to = 0; to < n; ++to) {
          if (!e[v][to] && !color[to]) {
            color[to] = color[v] ^ 1;
            q[tail++] = to;
          }
        }
      }
      for (int x = 0; x < tail; ++x) {
        for (int y = 0; y < tail; ++y) {
          if (x == y) continue;
          if (color[q[x]] != color[q[y]] && e[q[x]][q[y]]) {
            puts("No");
            return 0;
          } else if (color[q[x]] == color[q[y]] && !e[q[x]][q[y]]) {
            puts("No");
            return 0;
          }
        }
      }
      sizes.push_back(tail);
      if (tail == 1) {
        color[i] = -1;
      }
    }
  }
  int cnt = 0;
  for (int x : sizes) {
    if (x > 1) ++cnt;
  }
  if (cnt > 1) {
    puts("No");
    return 0;
  }
  puts("Yes");
  for (int i = 0; i < n; ++i) {
    putchar(color[i] < 0 ? 'b' : color[i] % 2 == 0 ? 'a' : 'c');
  }
}
