#include <bits/stdc++.h>
using namespace std;
long long int input(long long int n, vector<long long int> &ve);
long long int input(long long int n, vector<long long int> &ve) {
  long long int val;
  for (long long int i = 0; i < n; i++) {
    cin >> val;
    ve.push_back(val);
  }
  return 0;
}
int main(void) {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  long long int n, a, m, b;
  vector<long long int> vis, v;
  vector<vector<long long int>> adj;
  cin >> n >> m;
  vis.resize(n + 2, 0);
  adj.resize(n + 2);
  for (long long int i = 0; i < m; i++) {
    cin >> a >> b;
    adj[a].push_back(b);
    adj[b].push_back(a);
  }
  for (long long int i = 1; i < n + 1; i++) {
    if (adj[i].size() != n - 1) {
      v.push_back(i);
    } else {
      vis[i] = 1;
    }
  }
  if (v.size() == 0) {
    cout << "YES" << endl;
    for (long long int i = 0; i < n; i++) {
      cout << "b";
    }
    cout << endl;
  } else {
    vis[v[0]] = 2;
    for (long long int i = 0; i < adj[v[0]].size(); i++) {
      if (vis[adj[v[0]][i]] == 0) {
        vis[adj[v[0]][i]] = 2;
      }
    }
    long long int in = -1;
    for (long long int i = 0; i < v.size(); i++) {
      if (vis[v[i]] == 0) {
        vis[v[i]] = 3;
        in = i;
        break;
      }
    }
    long long int flag = 0;
    if (in != -1) {
      for (long long int i = 0; i < adj[v[in]].size(); i++) {
        if (vis[adj[v[in]][i]] == 0) {
          vis[adj[v[in]][i]] = 3;
        } else if (vis[adj[v[in]][i]] == 2) {
          flag = 1;
          break;
        }
      }
    }
    if (flag == 1) {
      cout << "NO" << endl;
      return 0;
    }
    for (long long int i = 0; i < v.size(); i++) {
      long long int x = vis[v[i]];
      if (x == 0) {
        flag = 1;
        break;
      }
    }
    long long int two = 0, three = 0;
    for (long long int i = 1; i < n + 1; i++) {
      if (vis[i] == 2) {
        two++;
      } else if (vis[i] == 3) {
        three++;
      } else {
        two++;
        three++;
      }
    }
    for (long long int i = 0; i < v.size(); i++) {
      long long int x = vis[v[i]];
      if (x != 1) {
        if (x == 2) {
          if (adj[v[i]].size() != two - 1) {
            flag = 1;
            break;
          }
        } else {
          if (adj[v[i]].size() != three - 1) {
            flag = 1;
            break;
          }
        }
        for (long long int j = 0; j < adj[v[i]].size(); j++) {
          if (vis[adj[v[i]][j]] != x && vis[adj[v[i]][j]] != 1) {
            flag = 1;
            break;
          }
        }
      }
      if (flag == 1) {
        break;
      }
    }
    if (flag == 1) {
      cout << "NO" << endl;
    } else {
      cout << "YES" << endl;
      for (long long int i = 1; i < n + 1; i++) {
        if (vis[i] == 1) {
          cout << "b";
        } else if (vis[i] == 2) {
          cout << "a";
        } else {
          cout << "c";
        }
      }
      cout << endl;
    }
  }
  return 0;
}
