#include <bits/stdc++.h>
using namespace std;
const int NO_OF_ALPHABETS = 26;
vector<int> degree(NO_OF_ALPHABETS, 0);
vector<int> graph[NO_OF_ALPHABETS];
vector<int> component_no(NO_OF_ALPHABETS, 0);
void dfs(int v, int parent_v, int c) {
  component_no[v] = c;
  for (int i = 0; i < graph[v].size(); i++) {
    int child_v = graph[v][i];
    if (child_v == parent_v || component_no[child_v] == c) {
      continue;
    }
    dfs(child_v, v, c);
  }
}
void solve() {
  string password;
  cin >> password;
  const int NO_OF_ALPHABETS = 26;
  vector<vector<int> > adjacency(NO_OF_ALPHABETS,
                                 vector<int>(NO_OF_ALPHABETS, false));
  for (int alpha = 0; alpha < NO_OF_ALPHABETS; alpha++) {
    degree[alpha] = 0;
    graph[alpha].clear();
    component_no[alpha] = 0;
  }
  for (int i = 1; i < password.size(); i++) {
    if (adjacency[password[i] - 'a'][password[i - 1] - 'a'] == false) {
      adjacency[password[i] - 'a'][password[i - 1] - 'a'] = true;
      adjacency[password[i - 1] - 'a'][password[i] - 'a'] = true;
      graph[password[i] - 'a'].push_back(password[i - 1] - 'a');
      graph[password[i - 1] - 'a'].push_back(password[i] - 'a');
      degree[password[i] - 'a']++;
      degree[password[i - 1] - 'a']++;
    }
  }
  vector<int> degree_2;
  for (int alpha = 0; alpha < NO_OF_ALPHABETS; alpha++) {
    if (degree[alpha] > 2) {
      cout << "NO\n";
      return;
    }
    if (degree[alpha] == 2) {
      degree_2.push_back(alpha);
    }
  }
  int component = 1;
  for (int alpha = 0; alpha < NO_OF_ALPHABETS; alpha++) {
    if (component_no[alpha] == 0) {
      dfs(alpha, -1, component++);
    }
  }
  string keyboard;
  vector<int> components;
  vector<int> used(NO_OF_ALPHABETS, false);
  for (int c = 1; c < component; c++) {
    vector<int> this_component;
    for (int alpha = 0; alpha < NO_OF_ALPHABETS; alpha++) {
      if (component_no[alpha] == c) {
        this_component.push_back(alpha);
      }
    }
    if (this_component.size() == 1) {
      keyboard += (char)('a' + this_component[0]);
      used[this_component[0]] = true;
      continue;
    }
    int border_1 = -1, border_2 = -1;
    for (int i = 0; i < this_component.size(); i++) {
      if (degree[this_component[i]] == 1) {
        if (border_1 == -1)
          border_1 = this_component[i];
        else
          border_2 = this_component[i];
      }
    }
    if (border_1 == -1 || border_2 == -1) {
      cout << "NO\n";
      return;
    }
    keyboard += (char)('a' + border_1);
    used[border_1] = true;
    while (keyboard.back() - 'a' != border_2) {
      for (int i = 0; i < graph[keyboard.back() - 'a'].size(); i++) {
        if (!used[graph[keyboard.back() - 'a'][i]]) {
          int next = graph[keyboard.back() - 'a'][i];
          keyboard += (char)('a' + next);
          used[next] = true;
          break;
        }
      }
    }
  }
  cout << "YES\n";
  cout << keyboard << "\n";
  return;
}
int main() {
  int no_of_test_cases;
  cin >> no_of_test_cases;
  while (no_of_test_cases--) solve();
  return 0;
}
