#include <bits/stdc++.h>
using namespace std;
int n, m, B = 0;
bool a[550][550];
bool b[550][550];
vector<int> vst;
queue<int> q;
bool visit[550];
vector<char> v(550, 'a');
void bfs() {
  while (q.size()) {
    int k = q.front();
    q.pop();
    visit[k] = 1;
    for (int i = 0; i < n; i++) {
      if (b[i][k] == 1 && visit[i] == 0 && v[i] != 'b') {
        q.push(i);
      }
    }
  }
}
int component_number() {
  memset(visit, 0, sizeof visit);
  int c = 0;
  for (int i = 0; i < n; i++) {
    if (visit[i] == 0 && v[i] != 'b') {
      c++;
      q.push(i);
      bfs();
    }
  }
  return c;
}
bool check() {
  int r = component_number();
  if (r > 2) return 1;
  if (r == 2) {
    int X = vst[0], Y = n, x = 1, y = 0;
    for (int i = 1; i < vst.size(); i++) {
      if (vst[i - 1] < vst[i]) {
        if (Y == n) {
          Y = vst[i];
          y = 1;
        } else
          return 1;
      } else {
        if (Y == n)
          x++;
        else
          y++;
      }
    }
    if (Y == n) {
      if (x % 2 == 0 && n - B == X + X + 2 && X + 1 == x / 2) return 0;
      return 1;
    }
    if (n - B == Y + X + 2 && X + 1 == x && Y + 1 == y) return 0;
    return 1;
  }
  if (r == 1) {
    int X = vst[0];
    for (int i = 1; i < vst.size(); i++)
      if (vst[i - 1] < vst[i]) return 1;
    if (X + 1 == n - B && vst.size() == X + 1) return 0;
    return 1;
  }
  return 0;
}
int main() {
  cin >> n >> m;
  memset(a, 0, sizeof a);
  memset(b, 0, sizeof b);
  int t1, t2;
  for (int i = 0; i < m; i++) {
    cin >> t1 >> t2;
    t1--;
    t2--;
    a[t1][t2] = 1;
    a[t2][t1] = 1;
    b[t1][t2] = 1;
    b[t2][t1] = 1;
  }
  int s[n];
  memset(s, 0, sizeof s);
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
      s[i] += a[i][j];
    }
    if (s[i] == n - 1) {
      B++;
      for (int k = 0; k < n; k++) {
        b[i][k] = 0;
        b[k][i] = 0;
      }
      v[i] = 'b';
    }
  }
  for (int i = 0; i < n; i++) {
    s[i] -= B;
    if (v[i] == 'a') vst.push_back(s[i]);
  }
  sort(vst.begin(), vst.end());
  if (check()) {
    cout << "No";
    return 0;
  }
  int tmp;
  bool f = 0;
  for (int i = 0; i < n; i++) {
    if (v[i] != 'b') {
      tmp = i;
      f = 1;
      break;
    }
  }
  if (f == 1) {
    for (int i = 0; i < n; i++) {
      if (a[i][tmp] == 0 && tmp != i && v[i] != 'b') {
        v[i] = 'c';
      }
    }
  }
  cout << "Yes" << endl;
  for (int i = 0; i < n; i++) cout << v[i];
  return 0;
}
