#include <bits/stdc++.h>
using namespace std;
struct node {
  int deg;
  int neighbor[3];
  node() {
    deg = 0;
    neighbor[0] = neighbor[1] = -1;
  }
};
bool mark[26] = {false};
bool flag = true;
int main() {
  int t;
  cin >> t;
  while (t--) {
    memset(mark, false, sizeof(mark));
    node key[26];
    flag = true;
    string s;
    cin >> s;
    if (s.length() == 1) {
      cout << "YES" << endl;
      for (int i = 0; i < 26; printf("%c", 'a' + i++))
        ;
      cout << endl;
      continue;
    }
    for (int i = 0; i < s.length() - 1; i++) {
      int p = s[i] - 'a', q = s[i + 1] - 'a';
      bool d1 = false, d2 = false;
      if (key[p].neighbor[0] != q && key[p].neighbor[1] != q) {
        if (key[p].deg >= 2) {
          flag = false;
          break;
        } else {
          key[p].neighbor[key[p].deg++] = q;
        }
      }
      if (key[q].neighbor[0] != p && key[q].neighbor[1] != p) {
        if (key[q].deg >= 2) {
          flag = false;
          break;
        } else {
          key[q].neighbor[key[q].deg++] = p;
        }
      }
    }
    int in = -1;
    for (int i = 0; i < 26; i++)
      if (key[i].deg == 1) {
        in = i;
        break;
      }
    if (!flag || in == -1)
      printf("NO\n");
    else {
      printf("YES\n%c", 'a' + in);
      mark[in] = true;
      int cur = key[in].neighbor[0];
      while (!mark[cur]) {
        mark[cur] = true;
        printf("%c", 'a' + cur);
        if (key[cur].deg == 1) break;
        if (!mark[key[cur].neighbor[0]])
          cur = key[cur].neighbor[0];
        else if (!mark[key[cur].neighbor[1]])
          cur = key[cur].neighbor[1];
      }
      for (int i = 0; i < 26; i++)
        if (!mark[i]) printf("%c", 'a' + i);
      cout << endl;
    }
  }
  return 0;
}
