#include <bits/stdc++.h>
using namespace std;
long long t, n, g, b, nr, ok, used[30], i, fr[30], j, k;
vector<int> v[30], ans;
set<int> sett[30];
string s;
void fast() {
  ios_base::sync_with_stdio(false);
  cin.tie();
}
void dfs(long long nod) {
  long long cate = 0;
  ++nr;
  used[nod] = 1;
  ans.push_back(nod);
  ++k;
  for (auto i : v[nod]) {
    if (!used[i]) {
      ++cate;
      dfs(i);
    } else if (i != ans[k - 2])
      ok = 0;
  }
  if (cate > 1) ok = 0;
  --k;
}
int main() {
  fast();
  cin >> t;
  while (t) {
    --t;
    cin >> s;
    ans.clear();
    for (i = 0; i < 26; ++i) {
      used[i] = 0, fr[i] = 0;
      v[i].clear();
      sett[i].clear();
    }
    n = s.size();
    long long cate = 0;
    for (i = 0; i < n; ++i) {
      fr[s[i] - 'a']++;
      if (fr[s[i] - 'a'] == 1) ++cate;
    }
    int okdif = 0;
    for (i = 1; i < n; ++i)
      if (s[i] != s[i - 1]) {
        okdif = 1;
        sett[s[i] - 'a'].insert(s[i - 1] - 'a');
        sett[s[i - 1] - 'a'].insert(s[i] - 'a');
      }
    if (!okdif) {
      cout << "YES\n";
      for (i = 0; i < ans.size(); ++i) cout << (char)('a' + ans[i]);
      for (i = 0; i < 26; ++i)
        if (!used[i]) cout << (char)('a' + i);
      cout << '\n';
      continue;
    }
    for (i = 0; i < 26; ++i)
      for (auto j : sett[i]) v[i].push_back(j);
    long long beg = -1;
    for (i = 0; i < 26; ++i)
      if (v[i].size() == 1) beg = i;
    if (beg == -1) {
      cout << "NO\n";
      continue;
    }
    ok = 1;
    nr = 0;
    k = 0;
    dfs(beg);
    if (!ok || nr != cate) {
      cout << "NO\n";
      continue;
    }
    cout << "YES\n";
    for (i = 0; i < ans.size(); ++i) cout << (char)('a' + ans[i]);
    for (i = 0; i < 26; ++i)
      if (!used[i]) cout << (char)('a' + i);
    cout << '\n';
  }
  return 0;
}
