#include <bits/stdc++.h>
using namespace std;
const int oo = (int)1e9;
const double PI = 2 * acos(0.0);
const double eps = 1e-9;
int n, m;
bool mat[555][555];
string ret;
vector<vector<int> > g;
bool vis[555];
void dfs(int cur, int col) {
  if (vis[cur]) return;
  vis[cur] = 1;
  ret[cur] = 'a' + col;
  for (int i = 0; i < (int)(((int)g[cur].size())); i++) dfs(g[cur][i], 2 - col);
}
int main() {
  int x, y;
  while (cin >> n >> m) {
    memset(mat, 0, sizeof(mat));
    while (m--) {
      cin >> x >> y;
      x--;
      y--;
      mat[x][y] = mat[y][x] = 1;
    }
    g.clear();
    g.resize(n);
    for (int i = 0; i < (int)(n); i++)
      for (int j = i + 1; j < (int)(n); j++)
        if (!mat[i][j]) {
          g[i].push_back(j);
          g[j].push_back(i);
        }
    ret = string(n, 'b');
    memset(vis, 0, sizeof(vis));
    bool found = 0;
    for (int i = 0; i < (int)(n); i++)
      if (!vis[i] && ((int)g[i].size())) {
        if (found) {
          cout << "No" << endl;
          goto END;
        }
        found = 1;
        dfs(i, 0);
      }
    for (int i = 0; i < (int)(n); i++)
      for (int j = i + 1; j < (int)(n); j++)
        if (mat[i][j] == ((ret[i] == 'a' && ret[j] == 'c') ||
                          (ret[i] == 'c' && ret[j] == 'a'))) {
          cout << "No" << endl;
          goto END;
        }
    cout << "Yes" << endl << ret << endl;
  END:;
  }
  return 0;
}
