#include <bits/stdc++.h>
using namespace std;
int main() {
  vector<int> G[505];
  char letter[505];
  bool hashh[505];
  char temp;
  int cnta, cntc;
  bool flag;
  int n, m;
  int u, v;
  while (cin >> n >> m) {
    cnta = cntc = 0;
    flag = true;
    memset(letter, 0, sizeof(0));
    for (int i = 0; i <= n; ++i) G[i].clear();
    for (int i = 0; i < m; ++i) {
      cin >> u >> v;
      G[u].push_back(v);
      G[v].push_back(u);
    }
    memset(hashh, 0, sizeof(hashh));
    for (int i = 1; i <= n; ++i) {
      if (G[i].size() == n - 1) letter[i - 1] = 'b';
    }
    temp = 'a';
    for (int i = 1; i <= n; ++i) {
      if (letter[i - 1] != 'b') {
        if (temp == 'a') {
          hashh[i] = true;
          for (int j = 0; j < G[i].size(); ++j) hashh[G[i][j]] = true;
          for (int j = 1; j <= n; ++j) {
            if (hashh[j] == false) {
              letter[j - 1] = 'c';
              ++cntc;
            } else if (letter[j - 1] != 'b') {
              letter[j - 1] = 'a';
              ++cnta;
            }
          }
          temp = 'c';
        } else {
          if (letter[i - 1] == 'a') {
            if (G[i].size() != n - cntc - 1) {
              flag = false;
              break;
            }
          } else if (letter[i - 1] == 'c') {
            if (G[i].size() != n - cnta - 1) {
              flag = false;
              break;
            }
          }
        }
      }
    }
    if (flag) {
      letter[n] = '\0';
      cout << "Yes" << endl << letter << endl;
    } else
      cout << "No" << endl;
  }
  return 0;
}
