#include <bits/stdc++.h>
using namespace std;
const int N = 505;
int n, m, t, x, y, b1, b2, dst[N], matris[N][N], mark[N];
vector<int> p1, p2, g[N];
string s;
void dfs(int x, int dist) {
  dst[x] = dist;
  mark[x] = 1;
  if (dist % 2)
    p1.push_back(x);
  else
    b2++, p2.push_back(x);
  for (long long i = 0; i < g[x].size(); i++)
    if (mark[g[x][i]] == 1 && dst[g[x][i]] % 2 == dist % 2) {
      cout << "NO";
      exit(0);
    }
  for (long long i = 0; i < g[x].size(); i++)
    if (mark[g[x][i]] == 0) dfs(g[x][i], dist + 1);
}
int main() {
  cin >> n >> m;
  for (long long i = 0; i < m; i++) {
    scanf("%d%d", &x, &y);
    ;
    matris[x][y] = matris[y][x] = 1;
  }
  for (long long i = 1; i < n + 1; i++)
    for (long long j = 1; j < i; j++)
      if (matris[i][j] == 0) g[i].push_back(j), g[j].push_back(i);
  for (long long i = 1; i < n + 1; i++) {
    if (mark[i] == 0) {
      if (g[i].size() > 0) {
        t++;
        if (t > 1) return cout << "NO", 0;
        dfs(i, 0);
      }
    }
  }
  for (long long i = 0; i < p1.size(); i++)
    if (g[p1[i]].size() < b2) return cout << "NO", 0;
  cout << "YES" << endl;
  for (long long i = 0; i < n; i++) s += 'p';
  for (long long i = 0; i < p1.size(); i++) s[p1[i] - 1] = 'a';
  for (long long i = 0; i < p2.size(); i++) s[p2[i] - 1] = 'c';
  for (long long i = 0; i < n; i++)
    if (s[i] == 'p') s[i] = 'b';
  cout << s;
}
