#include <bits/stdc++.h>
using namespace std;
const int MAXN = 505;
int graph[MAXN][MAXN];
int n, m;
int deg[MAXN];
int label[MAXN];
void dfs(int u, int &counts) {
  label[u] = 2;
  counts++;
  for (int v = 1; v <= n; v++) {
    if (label[v] == 0 && graph[u][v] == 1) {
      dfs(v, counts);
    }
  }
}
int main() {
  int u, v;
  scanf("%d%d", &n, &m);
  memset(graph, 0, sizeof(graph));
  memset(deg, 0, sizeof(deg));
  memset(label, 0, sizeof(label));
  for (int i = 1; i <= m; i++) {
    scanf("%d%d", &u, &v);
    graph[u][v] = graph[v][u] = 1;
    deg[u]++;
    deg[v]++;
  }
  int bcounts = 0;
  for (int i = 1; i <= n; i++) {
    if (deg[i] == n - 1) {
      label[i] = 1;
      bcounts++;
    }
  }
  int ccounts = 0;
  for (int i = 1; i <= n; i++) {
    if (label[i] == 0) {
      dfs(i, ccounts);
      break;
    }
  }
  bool flag = true;
  for (int i = 1; i <= n; i++) {
    if (label[i] == 0) {
      if (deg[i] != n - ccounts - 1) {
        flag = false;
        break;
      }
    } else if (label[i] == 2) {
      if (deg[i] != ccounts + bcounts - 1) {
        flag = false;
        break;
      }
    }
  }
  if (flag) {
    puts("Yes");
    for (int i = 1; i <= n; i++) {
      printf("%c", 'a' + label[i]);
    }
    puts("");
  } else {
    puts("No");
  }
}
