#include <bits/stdc++.h>
using namespace std;
const int N = 505;
vector<int> g[N];
int used[N], cant, pep[N][N];
void dfs(int u, int col) {
  if (g[u].size() == 0) return;
  used[u] = col;
  int ncol = ((col == 1) ? 2 : 1);
  for (int v : g[u])
    if (!used[v]) {
      dfs(v, ncol);
    } else if (used[v] == col) {
      cant = 1;
    }
}
int main() {
  int n, m;
  scanf("%d %d", &n, &m);
  for (int i = 0; i < m; ++i) {
    int u, v;
    scanf("%d %d", &u, &v);
    pep[u][v] = pep[v][u] = 1;
  }
  for (int i = 1; i <= n; ++i) {
    for (int j = 1; j <= n; ++j) {
      if (!pep[i][j] && i != j) {
        g[i].push_back(j);
      }
    }
  }
  for (int i = 1; i <= n; ++i) {
    if (!used[i]) dfs(i, 1);
  }
  if (cant) {
    printf("No\n");
    return 0;
  }
  char s[N];
  for (int i = 1; i <= n; ++i) {
    if (used[i] == 1) {
      s[i - 1] = 'a';
    } else if (used[i] == 2) {
      s[i - 1] = 'c';
    } else {
      s[i - 1] = 'b';
    }
  }
  s[n] = '\0';
  for (int i = 1; i <= n; ++i) {
    for (int j = 1; j <= n; ++j) {
      if (pep[i][j]) {
        if (abs(s[i - 1] - s[j - 1]) > 1) {
          printf("No\n");
          return 0;
        }
      }
    }
  }
  printf("Yes\n%s\n", s);
  return (0);
}
