#include <bits/stdc++.h>
using namespace std;
const long double INF = 1LL << 60, EPS = 1LL >> 60;
long long in() {
  char c;
  bool g = false;
  while (c = getchar(), c < '0' || c > '9')
    if (c == '-')
      g = true;
    else
      g = false;
  long long x = 0;
  while (c >= '0' && c <= '9') {
    x = x * 10 + c - 48;
    c = getchar();
  }
  return g ? -x : x;
}
void out(long long x) {
  long long len = 0, data[20];
  while (x) {
    data[len++] = x % 10;
    x /= 10;
  }
  if (!len) data[len++] = 0;
  if (data[0] != abs(data[0])) putchar('-');
  while (len--) putchar(abs(data[len]) + 48);
  putchar('\n');
}
void out(string s) {
  long long len = 0;
  while (len++ < s.size()) putchar(s[len - 1]);
  putchar('\n');
}
long long A, B, C;
vector<long long> al[1000];
bool vis[1000];
string s;
void dfs(int v) {
  vis[v] = true;
  s[v] = 'c';
  C++;
  A--;
  for (int i = 0; i < al[v].size(); i++) {
    int u = al[v][i];
    if (!vis[u] && s[u] - 'b') dfs(u);
  }
}
int main() {
  long long n = in(), m = in();
  for (long long i = 0; i < n; i++) s += 'a', A++;
  for (long long i = 0; i < m; i++) {
    long long v = in(), u = in();
    al[--v].push_back(--u);
    al[u].push_back(v);
  }
  for (long long i = 0; i < n; i++)
    if (al[i].size() == n - 1) s[i] = 'b', B++, A--;
  for (long long i = 0; i < n; i++)
    if (s[i] == 'a') {
      dfs(i);
      break;
    }
  if ((A * A + 2 * A * B + B * B + 2 * B * C + C * C - A - B - C) / 2 - m)
    out("No");
  else
    out("Yes"), out(s);
  return 0;
}
