#include <bits/stdc++.h>
using namespace std;
const int MAXN = 510;
bool adj[MAXN][MAXN];
int color[MAXN];
int qtd, n;
void dfs(int src) {
  ++qtd;
  for (int i = 0; i < (n); ++i)
    if (!adj[src][i] && !color[i]) {
      color[i] = (color[src] == 1 ? 3 : 1);
      dfs(i);
    }
}
bool verify() {
  for (int i = 0; i < (n); ++i)
    for (int j = 0; j < (n); ++j)
      if (i != j) {
        int p1 = color[i], p2 = color[j];
        if (p1 > p2) swap(p1, p2);
        if (!adj[i][j]) {
          if (p1 != 1 || p2 != 3) return false;
        } else {
          if (p1 == 1 && p2 == 3) return false;
        }
      }
  return true;
}
int main() {
  ios::sync_with_stdio(false);
  int m;
  cin >> n >> m;
  while (m--) {
    int x, y;
    cin >> x >> y;
    --x;
    --y;
    adj[x][y] = true;
    adj[y][x] = true;
  }
  vector<int> comps;
  for (int i = 0; i < (n); ++i)
    if (!color[i]) {
      qtd = 0;
      color[i] = 1;
      dfs(i);
      comps.push_back(qtd);
      if (qtd == 1) color[i] = 2;
    }
  sort((comps).begin(), (comps).end());
  if (verify()) {
    cout << "Yes\n";
    for (int i = 0; i < (n); ++i) {
      if (color[i] == 1)
        cout << 'a';
      else if (color[i] == 2)
        cout << 'b';
      else
        cout << 'c';
    }
    cout << endl;
  } else
    cout << "No" << endl;
  return 0;
}
