#include <bits/stdc++.h>
using namespace std;
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  ;
  int t;
  cin >> t;
  while (t--) {
    char str[204];
    cin >> str;
    int n = strlen(str);
    if (n == 1) {
      cout << "YES\n";
      for (int i = 0; i < 26; ++i) {
        cout << (char)(i + 'a');
      }
      cout << "\n";
      continue;
    }
    set<int> vv[26];
    vv[str[0] - 'a'].insert(str[1] - 'a');
    bool done[26] = {0};
    for (int i = 1; i < n - 1; ++i) {
      vv[str[i] - 'a'].insert(str[i - 1] - 'a');
      vv[str[i] - 'a'].insert(str[i + 1] - 'a');
    }
    vv[str[n - 1] - 'a'].insert(str[n - 2] - 'a');
    bool can = true;
    vector<string> ss;
    string s = "";
    for (int i = 0; i < 26; ++i) {
      if (vv[i].size() > 2) {
        can = false;
        break;
      }
      if (vv[i].size() == 2 or done[i]) continue;
      if (vv[i].size() == 0) {
        s = (char)(i + 'a');
        ss.push_back(s);
        s = "";
        done[i] = 1;
        continue;
      }
      s = "";
      s += (char)(i + 'a');
      done[i] = 1;
      int node = *(vv[i].begin());
      while (true) {
        s += (char)(node + 'a');
        done[node] = 1;
        if (vv[node].size() == 1) {
          break;
        }
        int a = *(vv[node].begin());
        int b = *(++vv[node].begin());
        if (done[a] and done[b]) {
          can = false;
          break;
        }
        int rq = a;
        if (done[a]) {
          rq = b;
        }
        node = rq;
      }
      ss.push_back(s);
    }
    for (auto xx : done) {
      if (xx == false) {
        can = false;
        break;
      }
    }
    if (!can) {
      cout << "NO\n";
      continue;
    }
    cout << "YES\n";
    for (auto xx : ss) {
      cout << xx;
    }
    cout << "\n";
  }
}
