#include <bits/stdc++.h>
using namespace std;
const int MAX_N = 500 + 10;
const int INF = 1e9;
int n, m, deg[MAX_N];
vector<int> v[MAX_N];
char ans[MAX_N];
bool mark[MAX_N], g[MAX_N][MAX_N], g1[MAX_N][MAX_N];
void dfs(int u) {
  mark[u] = true;
  ans[u] = 'a';
  for (int i = 0; i < v[u].size(); i++)
    if (!mark[v[u][i]] && ans[v[u][i]] == 'z') dfs(v[u][i]);
}
int main() {
  cin >> n >> m;
  for (int i = 0; i < MAX_N; i++) ans[i] = 'z';
  for (int i = 1; i <= m; i++) {
    int a, b;
    cin >> a >> b;
    deg[a]++;
    deg[b]++;
    g[a][b] = g[b][a] = true;
    v[a].push_back(b);
    v[b].push_back(a);
  }
  for (int i = 1; i <= n; i++)
    if (deg[i] == n - 1) ans[i] = 'b';
  for (int i = 1; i <= n; i++)
    if (ans[i] == 'z') {
      dfs(i);
      break;
    }
  for (int i = 1; i <= n; i++)
    if (ans[i] == 'z') ans[i] = 'c';
  for (int i = 1; i <= n; i++)
    for (int j = i + 1; j <= n; j++)
      if (abs(ans[i] - ans[j]) <= 1) g1[i][j] = g1[j][i] = true;
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= n; j++) {
      if (g1[i][j] != g[i][j]) {
        cout << "No";
        return 0;
      }
    }
  cout << "Yes" << endl;
  for (int i = 1; i <= n; i++) cout << ans[i];
}
