#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;   }