func_code_string: #include <bits/stdc++.h>   using namespace std;   const int MOD = 1e9 + 7;   const int MX = 2e5 + 5;   const long long INF = 1e18;   const long double PI = 4 * atan((long double)1);   template <class T>   bool ckmin(T& a, const T& b) {     return a > b ? a = b, 1 : 0;   }   template <class T>   bool ckmax(T& a, const T& b) {     return a < b ? a = b, 1 : 0;   }   set<int> v[26];   string ans;   int visited[26] = {0};   void dfs(int s) {     visited[s] = true;     ans += s +  a ;     for (auto& i : v[s]) {       if (visited[i] == false) dfs(i);     }   }   int main() {     int test;     cin >> test;     while (test--) {       string str;       cin >> str;       for (int i = 0; i < 26; i++) {         visited[i] = 0;         v[i].clear();       }       ans.clear();       int num1 = str.size();       for (int i = 1; i < num1; i++) {         v[str[i] -  a ].insert(str[i - 1] -  a );         v[str[i - 1] -  a ].insert(str[i] -  a );       }       int ok = 0;       for (int i = 0; i < 26; i++) {         if (v[i].size() > 2) {           ok = 1;           break;         }       }       if (ok == 1) {         cout <<  NO  << endl;       } else {         for (int i = 0; i < 26; i++) {           if (visited[i] == 0 && v[i].size() < 2) {             dfs(i);           }         }         bool ok = true;         for (int i = 0; i < 26; i++) {           if (visited[i] == 0) {             ok = false;           }         }         if (ok == false) {           cout <<  NO  << endl;         } else {           cout <<  YES  << endl;           cout << ans << endl;         }       }     }   }   