#include <bits/stdc++.h>
using namespace std;
int n, m;
char type[510];
bool adj[510][510];
int main() {
  cin >> n >> m;
  memset(adj, false, sizeof(adj));
  memset(type, '!', sizeof(type));
  for (int x, y, i = 0; i < m; i++) {
    cin >> x >> y;
    adj[x][y] = true;
    adj[y][x] = true;
  }
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= n; j++) {
      if (j == i) continue;
      for (int l = 1; l <= n; l++) {
        if (l == i || l == j) continue;
        if (adj[i][j] && adj[i][l] && !adj[j][l]) type[i] = 'b';
      }
    }
  }
  for (int i = 1; i <= n; i++) {
    if (type[i] == 'b') continue;
    bool good = true;
    for (int j = 1; j <= n; j++) {
      if (j == i) continue;
      if ((type[j] == 'a' && !adj[i][j]) || (adj[i][j] && type[j] == 'c')) {
        good = false;
        break;
      }
    }
    if (good) {
      type[i] = 'a';
      continue;
    }
    good = true;
    for (int j = 1; j <= n; j++) {
      if (j == i) continue;
      if ((type[j] == 'c' && !adj[i][j]) || (adj[i][j] && type[j] == 'a')) {
        good = false;
        break;
      }
    }
    if (good) {
      type[i] = 'c';
      continue;
    }
    return cout << "No" << endl, 0;
  }
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= n; j++) {
      if (j == i) continue;
      if ((type[i] == 'b' || type[i] == type[j]) && !adj[i][j])
        return cout << "No" << endl, 0;
    }
  }
  cout << "Yes" << endl;
  for (int i = 1; i <= n; i++) cout << type[i];
  cout << endl;
  return 0;
}
