#include <bits/stdc++.h>
using namespace std;
const int maxn = 600;
const long long mod = 1000000007;
bool G[maxn][maxn];
char s[maxn];
bool vis[maxn];
bool ans = true;
int cnt = 1;
int n, m;
void f(int now) {
  bool flag = false;
  if (vis[now]) return;
  vis[now] = true;
  for (int i = 1; i <= n; i++) {
    if (i == now) continue;
    if (G[now][i]) {
      flag = true;
      break;
    }
  }
  char tmp;
  if (!flag)
    s[now] = 'b';
  else if (s[now]) {
    if (s[now] == 'a')
      tmp = 'c';
    else
      tmp = 'a';
    for (int i = 1; i <= n; i++) {
      if (i == now) continue;
      if (G[now][i]) {
        if (s[i] && s[i] != tmp) ans = false;
        s[i] = tmp;
        f(i);
      }
    }
  } else {
    s[now] = 'a';
    tmp = 'c';
    for (int i = 1; i <= n; i++) {
      if (i == now) continue;
      if (G[now][i]) {
        if (s[i] && s[i] != tmp) ans = false;
        s[i] = tmp;
        f(i);
      }
    }
  }
}
int main() {
  cin >> n >> m;
  memset(G, true, sizeof(G));
  for (int i = 0; i < m; i++) {
    int x, y;
    cin >> x >> y;
    G[x][y] = G[y][x] = false;
  }
  memset(s, 0, sizeof(s));
  memset(vis, false, sizeof(vis));
  for (int i = 1; i <= n; i++) f(i);
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= n; j++) {
      if (G[i][j] == false && abs(s[i] - s[j]) > 1) ans = false;
    }
  if (ans) {
    cout << "Yes" << endl << s + 1 << endl;
  } else
    cout << "No" << endl;
  return 0;
}
