#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:1000000000")
using namespace std;
int n, m;
vector<int> f2;
bool find2(int a[505][505]) {
  int nnn = 1;
  int nn = 0;
  for (int i = 1; i <= n; i++) {
    nnn = 1;
    for (int j = 1; j <= n; j++)
      if (j != i && a[i][j] == 0) nnn = 0;
    if (nnn == 1)
      f2[i] = 2;
    else if (nn == 0)
      nn = i;
  }
  f2[nn] = 1;
  for (int i = 1; i <= n; i++) {
    if (f2[i] != 2 && i != nn) {
      if (a[nn][i] == 1)
        f2[i] = 1;
      else
        f2[i] = 3;
    }
  }
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= n; j++) {
      if (f2[j] == f2[i] && a[i][j] == 0 && i != j) return false;
      if (a[i][j] == 1 && f2[i] == 1 && f2[j] == 3) return false;
      if (a[i][j] == 1 && f2[i] == 3 && f2[j] == 1) return false;
    }
  return true;
}
int main() {
  int ba[505][505];
  memset(ba, 0, sizeof(ba));
  cin >> n >> m;
  f2.resize(n + 1, 0);
  int aa, b;
  for (int i = 1; i <= m; i++) {
    cin >> aa >> b;
    ba[aa][b] = ba[b][aa] = 1;
  }
  bool i2 = find2(ba);
  if (!i2)
    cout << "No";
  else {
    cout << "Yes" << endl;
    if (i2 == true) {
      for (int i = 1; i <= n; i++) {
        if (f2[i] == 1)
          cout << "a";
        else if (f2[i] == 2)
          cout << "b";
        else if (f2[i] == 3)
          cout << "c";
      }
    }
  }
  cout << endl;
  return 0;
}
