#include <bits/stdc++.h>
const int INF = 1000000007;
const int N = 555;
using namespace std;
int n, m, adj[N][N], cnt[N], color[N];
bool done, afill[N];
void dfs(int u, int turn) {
  for (int v = 1; v <= n; v++)
    if (v != u) {
      if (adj[u][v]) {
        if (color[v] != 0 && color[v] + color[u] == 4) {
          if (turn == 2) {
            cout << "No" << endl;
            exit(0);
          } else
            done = false;
        } else if (color[v] == 0) {
          color[v] = color[u];
          afill[v] = true;
        }
      } else if (color[v] != 0 &&
                 (color[v] == color[u] || abs(color[v] - color[u]) == 1)) {
        if (turn == 2) {
          cout << "No" << endl;
          exit(0);
        } else
          done = false;
      } else if (color[v] == 0) {
        color[v] = 4 - color[u];
        afill[v] = true;
      }
    }
}
int main() {
  cin >> n >> m;
  for (int i = 0; i < m; i++) {
    int u, v;
    scanf("%d%d", &u, &v);
    adj[u][v] = adj[v][u] = 1;
    cnt[u]++;
    cnt[v]++;
  }
  for (int i = 1; i <= n; i++)
    if (cnt[i] == n - 1) color[i] = 2;
  for (int i = 1; i <= n; i++)
    if (cnt[i] < n - 1) {
      if (color[i] == 0) {
        color[i] = 1;
        done = true;
        memset(afill, false, sizeof(afill));
        dfs(i, 1);
        if (done) continue;
        for (int j = 1; j <= n; j++)
          if (afill[j]) color[j] = 0;
        color[i] = 3;
        dfs(i, 2);
      } else {
        dfs(i, 2);
      }
    }
  cout << "Yes" << endl;
  for (int i = 1; i <= n; i++) cout << char(color[i] + 96);
  return 0;
}
