func_code_string: #include <bits/stdc++.h>   using namespace std;   vector<int> g[26];   int visited[26];   int p[26], deg[26];   string ans;   bool fail;   void dfs(int u) {     visited[u] = 2;     ans += (char)(u +  a );     for (int i = 0; i < (int)g[u].size(); i++) {       int v = g[u][i];       if (visited[v] == 0) {         p[v] = u;         dfs(v);       } else if (visited[v] == 2) {         if (p[u] != v) {           fail = true;         }       }     }     visited[u] = 1;   }   int main() {     ios::sync_with_stdio(false);     cin.tie(0);     int tt;     cin >> tt;     while (tt--) {       string s;       cin >> s;       int n = s.size();       ans =   ;       for (int i = 0; i < 26; i++) {         g[i].clear();         visited[i] = 0;         p[i] = -1;         deg[i] = 0;       }       map<pair<int, int>, int> m;       for (int i = 1; i < n; i++) {         int v = (s[i] -  a );         int u = (s[i - 1] -  a );         int uu = min(u, v);         int vv = max(u, v);         if (m[make_pair(uu, vv)] == 0) {           g[u].push_back(v);           g[v].push_back(u);           deg[u]++;           deg[v]++;           m[make_pair(uu, vv)]++;         }       }       fail = false;       for (int i = 0; i < 26; i++) {         if (deg[i] > 2) {           fail = true;         }         if (!visited[i] && deg[i] < 2) {           dfs(i);         }       }       if (fail || ans.size() < 26) {         cout <<  NO  <<   n ;       } else {         cout <<  YES  <<   n ;         cout << ans <<   n ;       }     }     return 0;   }   