#include <bits/stdc++.h>
using namespace std;
char s[505];
int graph[505][505];
int n, m, a, b;
int flag;
void dfs(int i, char k) {
  s[i] = k;
  for (int j = 1; j <= n; j++) {
    if (i != j && s[j] != 'b')
      if (graph[i][j] == 0) {
        if (s[j] == 'd') {
          k == 'a' ? dfs(j, 'c') : dfs(j, 'a');
        } else if (s[j] == k) {
          flag = 0;
          return;
        }
      } else {
        if (s[j] == 'd') {
          k == 'a' ? dfs(j, 'a') : dfs(j, 'c');
        } else if (s[j] != k) {
          flag = 0;
          return;
        }
      }
  }
}
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= m; i++) {
    scanf("%d%d", &a, &b);
    graph[a][b] = 1;
    graph[b][a] = 1;
  }
  for (int i = 0; i <= n; i++) s[i] = 'd';
  for (int i = 1; i <= n; i++) {
    int tmp = 0;
    for (int j = 1; j <= n; j++)
      if (j != i && graph[i][j]) tmp++;
    if (tmp == n - 1) s[i] = 'b';
  }
  flag = 1;
  for (int i = 1; i <= n; i++) {
    if (s[i] == 'd') dfs(i, 'a');
  }
  if (flag == 0) {
    printf("No\n");
    return 0;
  }
  printf("Yes\n");
  for (int i = 1; i <= n; i++) printf("%c", s[i]);
  printf("\n");
  return 0;
}
