#include <bits/stdc++.h>
using namespace std;
template <class T>
inline T read() {
  char ch = ' ';
  T ret = (T)0;
  bool positive = 1;
  while (!(ch >= '0' && ch <= '9')) {
    if (ch == '-') positive ^= 1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') {
    ret = ret * ((T)10) + ((T)(ch - '0'));
    ch = getchar();
  }
  return positive ? ret : -ret;
}
const int N = 510;
int n, m;
bool edge[N][N];
int color[N], du[N];
inline bool search(int x, int c) {
  if (color[x] != -1) return color[x] == c;
  color[x] = c;
  for (int i = 0; i < n; i++)
    if (x != i && !edge[x][i]) {
      if (!search(i, c ^ 1)) return false;
    }
  return true;
}
inline void solve() {
  for (int i = 0; i < n; i++) color[i] = -1;
  bool noAnswer = false;
  for (int i = 0; i < n; i++)
    if (color[i] == -1 && du[i] < n - 1) {
      if (!search(i, 0)) {
        noAnswer = true;
        break;
      }
    }
  for (int i = 0; !noAnswer && i < n; i++)
    for (int j = 0; !noAnswer && j < n; j++)
      if (edge[i][j] && color[i] != -1 && color[j] != -1 &&
          color[i] != color[j])
        noAnswer = true;
  if (noAnswer == true)
    puts("No");
  else {
    puts("Yes");
    for (int i = 0; i < n; i++)
      if (color[i] == -1)
        putchar('b');
      else if (color[i] == 0)
        putchar('a');
      else
        putchar('c');
    puts("");
  }
}
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 0, u, v; i < m; i++) {
    scanf("%d%d", &u, &v);
    u--, v--;
    edge[u][v] = edge[v][u] = true;
    du[u]++, du[v]++;
  }
  solve();
  return 0;
}
