#include <bits/stdc++.h>
using namespace std;
int s[503], adj1[503][503], adj2[503][503], deg[503], vis[503];
vector<int> g[503];
int n;
int check() {
  for (int i = 0; i < n; i++) {
    for (int j = i + 1; j < n; j++)
      if (((s[i] - s[j]) > 0 ? (s[i] - s[j]) : -(s[i] - s[j])) < 2)
        adj2[i][j] = adj2[j][i] = 1;
  }
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++)
      if (adj1[i][j] != adj2[i][j]) return 0;
  }
  return 1;
}
void dfs(int u) {
  if (!s[u])
    s[u] = 1;
  else
    return;
  vis[u] = 1;
  for (int i = 0; i < g[u].size(); i++)
    if (!vis[g[u][i]]) dfs(g[u][i]);
}
int main() {
  ios_base::sync_with_stdio(0);
  int m, x, y;
  cin >> n >> m;
  for (int i = 1; i < m + 1; i++) {
    cin >> x >> y;
    x--, y--;
    g[y].push_back(x);
    g[x].push_back(y);
    deg[x]++;
    deg[y]++;
    adj1[y][x] = 1;
    adj1[x][y] = 1;
  }
  int nob = 0;
  for (int i = 0; i < n; i++) {
    if (deg[i] == n - 1) s[i] = 2, nob++;
  }
  int pos, f = 0;
  for (int i = 0; i < n; i++) {
    if (deg[i] != n - 1) {
      pos = i;
      f = 1;
      break;
    }
  }
  if (!f) {
    cout << "Yes\n";
    for (int i = 0; i < n; i++) cout << "b";
    return 0;
  }
  dfs(pos);
  for (int i = 0; i < n; i++)
    if (!s[i]) s[i] = 3;
  if (check()) {
    cout << "Yes\n";
    for (int i = 0; i < n; i++) {
      if (s[i] == 1)
        cout << 'a';
      else if (s[i] == 2)
        cout << 'b';
      else
        cout << 'c';
    }
  } else
    cout << "No";
  return 0;
}
