#include <bits/stdc++.h>
using namespace std;
const int N = 507;
int n, m, cnt;
char str[N];
bool e[N][N];
bool vis[N];
int head, tail, que[N];
bool bfs(int x) {
  head = 0, tail = 1;
  que[0] = x;
  vis[x] = true;
  while (head < tail) {
    x = que[head++];
    for (int i = 0; i < n; ++i)
      if (!vis[i] && e[x][i]) {
        vis[i] = true;
        que[tail++] = i;
      }
  }
  for (int i = 0; i < tail; ++i) {
    for (int j = 0; j < tail; ++j)
      if (i != j && !e[que[i]][que[j]]) {
        return false;
      }
  }
  char ch = cnt == 0 ? 'a' : 'b' + cnt;
  for (int i = 0; i < tail; ++i) {
    str[que[i]] = ch;
  }
  return true;
}
int main() {
  scanf("%d%d", &n, &m);
  str[n] = '\n';
  for (int i = 0; i < n; ++i) str[i] = '$';
  for (int i = 0; i < n; ++i)
    for (int j = 0; j < n; ++j) {
      e[i][j] = false;
    }
  for (int i = 0; i < m; ++i) {
    int u, v;
    scanf("%d%d", &u, &v);
    if (u == v) continue;
    --u, --v;
    e[u][v] = e[v][u] = true;
  }
  for (int i = 0; i < n; ++i) {
    bool flag = true;
    for (int j = 0; j < n; ++j)
      if (i != j && !e[i][j]) {
        flag = false;
      }
    if (!flag) continue;
    str[i] = 'b';
  }
  for (int i = 0; i < n; ++i)
    if (str[i] == 'b') {
      for (int j = 0; j < n; ++j) e[i][j] = e[j][i] = false;
    }
  bool ans = true;
  for (int i = 0; i < n; ++i) {
    vis[i] = false;
  }
  for (int i = 0; i < n && ans; ++i)
    if (str[i] == '$') {
      ans &= bfs(i);
      ++cnt;
    }
  ans &= (cnt <= 2);
  if (ans) {
    puts("Yes");
    puts(str);
  } else {
    puts("No");
  }
  return 0;
}
