#include <bits/stdc++.h>
using namespace std;
int read() {
  int x = 0, f = 1;
  char ch = getchar();
  while (ch < '0' || ch > '9') {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') {
    x = (x * 10 + ch - '0');
    ch = getchar();
  }
  return x * f;
}
int vis[505][505];
int fa[1005], op[1005];
int findSet(int x) {
  if (x == fa[x]) return x;
  fa[x] = findSet(fa[x]);
  return fa[x];
}
char ch[1005];
int p1[1000005], p2[1000005];
int main() {
  int n = read(), m = read();
  for (int i = 1; i <= m; i++) {
    int u = read(), v = read();
    p1[i] = u, p2[i] = v;
    vis[u][v] = vis[v][u] = 1;
  }
  for (int i = 1; i <= 2 * n; i++) fa[i] = i;
  int pos = 1, P = n * n;
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= n; j++) {
      if (i == j) {
        P--;
        continue;
      }
      if (vis[i][j] == 0) {
        P--;
        op[i] = 1;
        if (findSet(i) == findSet(j) || findSet(i + n) == findSet(j + n)) {
          return printf("No") & 0;
        } else {
          if (findSet(i + n) != findSet(j)) {
            fa[findSet(j)] = findSet(i + n);
            pos = findSet(j);
          }
          if (findSet(i) != findSet(j + n)) {
            fa[findSet(i)] = findSet(j + n);
          }
        }
      }
    }
  }
  for (int i = 1; i <= m; i++) {
    if (findSet(p1[i]) == findSet(p2[i] + n) ||
        findSet(p2[i]) == findSet(p1[i] + n)) {
      return printf("No") & 0;
    }
  }
  for (int i = 1; i <= n; i++) {
    if (op[i] == 0)
      ch[i] = 'b';
    else {
      if (findSet(i) == findSet(pos)) {
        ch[i] = 'a';
      } else
        ch[i] = 'c';
    }
  }
  int tot = 0;
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= n; j++) {
      if (i == j) continue;
      if (!((ch[i] == 'a' && ch[j] == 'c') || (ch[i] == 'c' && ch[j] == 'a'))) {
        tot++;
      }
    }
  }
  if (tot != P) return printf("No") & 0;
  printf("Yes\n");
  printf("%s", ch + 1);
  return 0;
}
