#include <bits/stdc++.h>
using namespace std;
int mem[505][505], tot[505], vis[505];
char s[505];
int adj(int a, int b) {
  if (s[a] == s[b]) return 1;
  if (s[a] - s[b] == 1 || s[a] - s[b] == -1) return 1;
  return 0;
}
int main() {
  int n, m;
  while (scanf("%d%d", &n, &m) != EOF) {
    memset(mem, 0, sizeof(mem));
    memset(tot, 0, sizeof(tot));
    int x, y;
    for (int i = 1; i <= m; i++) {
      scanf("%d%d", &x, &y);
      mem[x][y] = mem[y][x] = 1;
      tot[x]++;
      tot[y]++;
    }
    memset(vis, 0, sizeof(vis));
    for (int i = 1; i <= n; i++) {
      if (tot[i] == n - 1)
        continue;
      else {
        s[i] = 'a';
        for (int j = 1; j <= n; j++) {
          if (i == j || tot[j] == n - 1) continue;
          if (mem[i][j] == 1)
            s[j] = 'a';
          else
            s[j] = 'c';
        }
        break;
      }
    }
    for (int i = 1; i <= n; i++) {
      if (tot[i] == n - 1) s[i] = 'b';
    }
    int is = 1;
    for (int i = 1; i <= n; i++) {
      for (int j = i + 1; j <= n; j++) {
        if (adj(i, j) != mem[i][j]) is = 0;
      }
      if (is == 0) break;
    }
    if (is) {
      printf("Yes\n");
      for (int i = 1; i <= n; i++) printf("%c", s[i]);
      printf("\n");
    } else
      printf("No\n");
  }
  return 0;
}
