#include <bits/stdc++.h>
using namespace std;
const int mod = 1e9 + 7;
set<int> v[550];
int clr[550];
bool bfs(int pos) {
  if (v[pos].empty()) {
    clr[pos] = 1;
    return false;
  }
  queue<int> q;
  clr[pos] = 0;
  q.push(pos);
  while (!q.empty()) {
    int t = q.front();
    q.pop();
    assert(clr[t] == 0 || clr[t] == 2);
    for (set<int>::iterator it = v[t].begin(); it != v[t].end(); ++it)
      if (clr[*it] == -1) {
        clr[*it] = 2 - clr[t];
        q.push(*it);
      } else if (clr[*it] == clr[t])
        return true;
  }
  return false;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  int n, m, x, y;
  cin >> n >> m;
  for (long long i = 1; i <= (n); i++)
    for (long long j = 1; j <= (n); j++) v[i].insert(j);
  for (long long i = 1; i <= (n); i++) v[i].erase(i);
  while (m--) {
    cin >> x >> y;
    v[x].erase(y);
    v[y].erase(x);
  }
  memset(clr, (-1), sizeof clr);
  for (long long i = 1; i <= (n); i++) {
    if (clr[i] != -1) continue;
    if (bfs(i)) {
      cout << "No";
      return 0;
    }
  }
  for (long long i = 1; i <= (n); i++) assert(clr[i] > -1);
  for (long long i = 1; i <= (n); i++) {
    for (long long j = 1; j <= (n); j++) {
      if (j == i) continue;
      if (abs(clr[i] - clr[j]) == 2) {
        if (v[i].count(j) == 0 || v[j].count(i) == 0) {
          cout << "No";
          return 0;
        }
      } else {
        if (v[i].count(j) || v[j].count(i)) {
          cout << "No";
          return 0;
        }
      }
    }
  }
  cout << "Yes" << endl;
  for (long long i = 1; i <= (n); i++)
    if (clr[i] == 0)
      cout << "a";
    else if (clr[i] == 1)
      cout << "b";
    else if (clr[i] == 2)
      cout << "c";
  return 0;
}
