#include <bits/stdc++.h>
using namespace std;
const int maxN = (int)500 + 2;
int n, m;
bool a[maxN][maxN];
char s[maxN];
void DFS(int u);
int main() {
  scanf("%d %d", &n, &m);
  memset(a, false, sizeof(a));
  for (int i = 0; i < m; ++i) {
    int u, v;
    scanf("%d %d", &u, &v);
    --u;
    --v;
    a[u][v] = a[v][u] = true;
  }
  for (int u = 0; u < n; ++u) s[u] = 'd';
  s[n] = '\0';
  for (int u = 0; u < n; ++u) {
    bool flag = false;
    for (int v = 0; v < n && !flag; ++v)
      if (u != v && !a[u][v]) flag = true;
    if (!flag) s[u] = 'b';
  }
  for (int u = 0; u < n; ++u)
    if (s[u] == 'd') {
      DFS(u);
      break;
    }
  for (int u = 0; u < n; ++u)
    if (s[u] == 'd') s[u] = 'c';
  bool acceptable = true;
  for (int u = 0; u < n && acceptable; ++u)
    for (int v = 0; v < u && acceptable; ++v)
      if (a[u][v])
        acceptable = abs(s[u] - s[v]) <= 1;
      else
        acceptable = abs(s[u] - s[v]) > 1;
  if (!acceptable)
    printf("No\n");
  else
    printf("Yes\n%s\n", s);
  return 0;
}
void DFS(int u) {
  s[u] = 'a';
  for (int v = 0; v < n; ++v)
    if (a[u][v] && s[v] == 'd') DFS(v);
}
