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