#include <bits/stdc++.h>
using namespace std;
const int MaxN = 500;
int data[MaxN + 5][MaxN + 5];
char ans[MaxN + 5];
int n, m, cot;
void dfs(int i) {
  for (int j = 1; j <= n; j++) {
    if (i != j && data[j][i] == 0 && ans[j] == ans[i]) {
      cot = 1;
      return;
    }
    if (i != j && data[j][i] == 1 &&
        ((ans[j] == 'a' && ans[i] == 'c') ||
         (ans[j] == 'c' && ans[i] == 'a'))) {
      cot = 1;
      return;
    }
    if (i != j && data[j][i] == 0 && ans[j] == 0) {
      if (ans[i] == 'a') {
        ans[j] = 'c';
      } else {
        ans[j] = 'a';
      }
      dfs(j);
    }
    if (i != j && data[j][i] == 1 && ans[j] == 0) {
      if (ans[i] == 'a') {
        ans[j] = 'a';
      } else {
        ans[j] = 'c';
      }
      dfs(j);
    }
  }
}
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= m; i++) {
    int a, b;
    scanf("%d%d", &a, &b);
    data[a][b] = 1;
    data[b][a] = 1;
  }
  for (int i = 1; i <= n; i++) {
    bool flag = 0;
    for (int j = 1; j <= n; j++) {
      if (data[i][j] == 0 && j != i) {
        flag = 1;
      }
    }
    if (!flag) {
      ans[i] = 'b';
    }
  }
  for (int i = 1; i <= n; i++) {
    if (ans[i] == 0) {
      ans[i] = 'a';
      dfs(i);
    }
  }
  if (cot == 1) {
    printf("No\n");
    return 0;
  }
  printf("Yes\n%s\n", ans + 1);
}
