#include <bits/stdc++.h>
using namespace std;
vector<int> a[510];
char xx[510];
int v[510];
int m[510][510];
bool VALID(int n) {
  for (int i = 1; i <= n; i++) {
    for (int j = i + 1; j <= n; j++) {
      int diff = int(xx[i]) - int(xx[j]);
      if (diff < 0) diff = -diff;
      if (diff <= 1) {
        if (m[i][j] == 0) return false;
        m[i][j] = m[j][i] = -1;
      }
    }
  }
  for (int i = 1; i <= n; i++) {
    for (int j = i + 1; j <= n; j++) {
      if (m[i][j] == 1) return false;
    }
  }
  return true;
}
int main() {
  int n, M;
  cin >> n >> M;
  while (M--) {
    int u, v;
    cin >> u >> v;
    a[u].push_back(v);
    a[v].push_back(u);
    m[u][v] = m[v][u] = 1;
  }
  int other = 1;
  for (int i = 1; i <= n; i++) xx[i] = ' ';
  for (int i = 1; i <= n; i++) {
    int sz = a[i].size() + 1;
    if (sz == n)
      xx[i] = 'b';
    else
      other = i;
  }
  if (xx[other] != 'b') xx[other] = 'a';
  for (auto i : a[other]) {
    if (xx[i] != 'b') {
      xx[i] = 'a';
    }
  }
  for (int i = 1; i <= n; i++) {
    if (xx[i] == ' ') xx[i] = 'c';
  }
  if (VALID(n)) {
    cout << "Yes" << endl;
    for (int i = 1; i <= n; i++) cout << xx[i];
    cout << endl;
  } else
    cout << "No" << endl;
  return 0;
}
