#include <bits/stdc++.h>
using namespace std;
const int INF = INT_MAX;
const long long INFL = LLONG_MAX;
const long double pi = acos(-1);
int N, M;
vector<int> adj[505];
int mat[505][505];
int color[505];
void dfs(int u, int curcolor) {
  if (color[u] != 0) return;
  color[u] = curcolor;
  for (int(i) = 0; (i) < (int((adj[u]).size())); (i)++) {
    int v = adj[u][i];
    dfs(v, -curcolor);
  }
}
int main() {
  ios_base::sync_with_stdio(0);
  cout.precision(15);
  cout << fixed;
  cout.tie(0);
  cin.tie(0);
  cin >> N >> M;
  if (M == 0) {
    if (N <= 2) {
      cout << "Yes" << '\n';
      if (N == 1) cout << "a" << '\n';
      if (N == 2) cout << "ac" << '\n';
    } else {
      cout << "No" << '\n';
    }
    return 0;
  }
  for (int(o_o) = 0; (o_o) < (M); (o_o)++) {
    int a, b;
    cin >> a >> b;
    a--;
    b--;
    mat[a][b] = mat[b][a] = 1;
  }
  for (int(i) = 0; (i) < (N); (i)++)
    for (int(j) = 0; (j) < (N); (j)++)
      if (i != j && !mat[i][j]) adj[i].push_back(j);
  for (int(i) = 0; (i) < (N); (i)++) {
    if (int((adj[i]).size()) >= 1) {
      dfs(i, 1);
      break;
    }
  }
  int good = 1;
  for (int(i) = 0; (i) < (N); (i)++)
    for (int(j) = 0; (j) < (N); (j)++)
      if (i != j) {
        if (mat[i][j]) {
          good &= (abs(color[i] - color[j]) <= 1);
        } else {
          good &= (abs(color[i] - color[j]) == 2);
        }
      }
  if (good) {
    cout << "Yes" << '\n';
    for (int(i) = 0; (i) < (N); (i)++) cout << ((char)(color[i] + 1 + 'a'));
    cout << '\n';
  } else {
    cout << "No" << '\n';
  }
}
