#include <bits/stdc++.h>
using namespace std;
int arr[26];
vector<char> ans;
long long flag;
char visited[26];
void dfs(char node, vector<set<char>> &graph) {
  if (visited[node - 'a'] == 1) {
    flag = 1;
    return;
  }
  arr[node - 'a']++;
  ans.push_back(node);
  visited[node - 'a'] = 1;
  for (auto u : graph[node - 'a']) {
    if (!visited[u - 'a']) {
      dfs(u, graph);
    }
  }
}
int main() {
  long long t, cnt;
  cin >> t;
  string s;
  while (t--) {
    cnt = 0;
    vector<set<char>> graph;
    flag = 0;
    for (int i = 0; i < 26; ++i) {
      visited[i] = 0;
    }
    cin >> s;
    for (int i = 0; i < 26; ++i) {
      arr[i] = 0;
    }
    graph.resize(26);
    if (s.size() == 1) {
      cout << "YES\n";
      for (int i = 0; i < 26; i++) cout << (char)(i + 'a');
      cout << '\n';
    } else if (s.size() == 2) {
      cout << "YES\n";
      cout << s;
      arr[s[0] - 'a']++;
      arr[s[1] - 'a']++;
      for (int i = 0; i < 26; ++i) {
        if (arr[i] == 0) cout << (char)(i + 'a');
      }
      cout << '\n';
    } else {
      for (int i = 1; i < s.size() - 1; ++i) {
        graph[s[i] - 'a'].insert(s[i - 1]);
        graph[s[i - 1] - 'a'].insert(s[i]);
        graph[s[i + 1] - 'a'].insert(s[i]);
        graph[s[i] - 'a'].insert(s[i + 1]);
      }
      for (int i = 0; i < 26; ++i) {
        if (graph[i].size() >= 3) {
          flag = 1;
          break;
        }
      }
      if (flag == 1) {
        cout << "NO\n";
        continue;
      }
      for (int i = 0; i < 26; ++i) {
        if (graph[i].size() == 1) {
          dfs((char)i + 'a', graph);
          break;
        } else
          cnt++;
      }
      if (cnt == 26) flag = 1;
      if (flag == 1) {
        cout << "NO\n";
        continue;
      } else {
        cout << "YES\n";
        for (int i = 0; i < ans.size(); ++i) {
          cout << ans[i];
        }
        for (int i = 0; i < 26; i++) {
          if (arr[i] == 0) cout << (char)(i + 'a');
        }
        cout << '\n';
      }
    }
    ans.clear();
  }
  return 0;
}
