#include <bits/stdc++.h>
int F(const void* x, const void* y) { return *(int*)y - *(int*)x; }
char C[555], bad;
unsigned G[555][555], S[555], l;
void D(unsigned n, unsigned x) {
  if (bad || C[n] == 'b') return;
  if (C[n]) {
    if (x) {
      if (C[n] != 'c') bad = 1;
    } else {
      if (C[n] != 'a') bad = 1;
    }
    return;
  }
  C[n] = x ? 'c' : 'a';
  unsigned i;
  for (i = -1; ++i < l;)
    if (i != n) {
      if (G[i][n])
        D(i, x);
      else
        D(i, x ^ 1);
    }
  return;
}
int main() {
  unsigned n, q, i, j;
  for (scanf("%u%u", &n, &q); q--; G[i][j] = G[j][i] = 1) {
    scanf("%u%u", &i, &j);
    ++S[--i];
    ++S[--j];
  }
  l = n;
  for (i = -1; ++i < n;)
    if (S[i] == n - 1) C[i] = 'b';
  for (i = -1; ++i < n;)
    if (!C[i]) D(i, 0);
  printf(bad ? "No\n" : "Yes\n%s\n", C);
  return 0;
}
