#include <bits/stdc++.h>
using namespace std;
int a[505][505];
int vis[505], vis1[505];
int n;
bool ok = 1;
void dfs(int x, int type, bool ok1) {
  vis1[x] = 1;
  for (int i = 1; i <= n; i++)
    if (vis1[i] == 0 && a[x][i] == 0) {
      ok1 = 1;
      int nt = 0;
      if (type == 0) nt = 2;
      dfs(i, nt, 1);
    } else if (a[x][i] == 0 && x != i && vis[i] == type && vis[i] != 1) {
      ok = 0;
    }
  if (ok1) vis[x] = type;
  for (int i = 1; i <= n; i++)
    if (a[x][i] == 0 && x != i && vis[x] == vis[i] && vis[x] != 1)
      ok = 0;
    else if (a[x][i] == 1 &&
             ((vis[x] == 0 && vis[i] == 2) || (vis[x] == 2 && vis[i] == 0)))
      ok = 0;
}
int main() {
  int m;
  cin >> n >> m;
  for (int i = 0; i < m; i++) {
    int x, y;
    scanf("%d %d", &x, &y);
    a[x][y] = 1;
    a[y][x] = 1;
  }
  for (int i = 1; i <= n; i++) vis[i] = 1;
  for (int i = 1; i <= n && ok; i++) {
    if (vis1[i] == 0) dfs(i, 0, 0);
  }
  if (ok) {
    cout << "Yes" << endl;
    string ans = "";
    for (int i = 1; i <= n; i++) ans += (vis[i] + 'a');
    cout << ans << endl;
  } else {
    cout << "No" << endl;
  }
}
