description: You are given a string s of length n consisting of characters a and/or b.
  
  Let \operatorname{AB}(s) be the number of occurrences of string ab in s as a substring. Analogically, \operatorname{BA}(s) is the number of occurrences of ba in s as a substring.
  
  In one step, you can choose any index i and replace s_i with character a or b.
  
  What is the minimum number of steps you need to make to achieve \operatorname{AB}(s) = \operatorname{BA}(s)?
  
  Reminder:
  
  The number of occurrences of string d in s as substring is the number of indices i (1 ≤ i ≤ |s| - |d| + 1) such that substring s_i s_{i + 1} ... s_{i + |d| - 1} is equal to d. For example, \operatorname{AB}(aabbbabaa) = 2 since there are two indices i: i = 2 where aabbbabaa and i = 6 where aabbbabaa.
  
  Input
  
  Each test contains multiple test cases. The first line contains the number of test cases t (1 ≤ t ≤ 1000). Description of the test cases follows.
  
  The first and only line of each test case contains a single string s (1 ≤ |s| ≤ 100, where |s| is the length of the string s), consisting only of characters a and/or b.
  
  Output
  
  For each test case, print the resulting string s with \operatorname{AB}(s) = \operatorname{BA}(s) you'll get making the minimum number of steps.
  
  If there are multiple answers, print any of them.
  
  Example
  
  Input
  
  
  4
  b
  aabbbabaa
  abbb
  abbaab
  
  
  Output
  
  
  b
  aabbbabaa
  bbbb
  abbaaa
  
  Note
  
  In the first test case, both \operatorname{AB}(s) = 0 and \operatorname{BA}(s) = 0 (there are no occurrences of ab (ba) in b), so can leave s untouched.
  
  In the second test case, \operatorname{AB}(s) = 2 and \operatorname{BA}(s) = 2, so you can leave s untouched. 
  
  In the third test case, \operatorname{AB}(s) = 1 and \operatorname{BA}(s) = 0. For example, we can change s_1 to b and make both values zero.
  
  In the fourth test case, \operatorname{AB}(s) = 2 and \operatorname{BA}(s) = 1. For example, we can change s_6 to a and make both values equal to 1.
solution: import java.io.BufferedReader;
  import java.io.IOException;
  import java.io.InputStreamReader;
  import java.io.PrintWriter;
  import java.util.ArrayList;
  import java.util.List;
  import java.util.StringTokenizer;
  
  public class _1606_A {
  
      private static final FastScanner in = new FastScanner();
      private static final PrintWriter out = new PrintWriter(System.out);
      private static final PrintWriter err = new PrintWriter(System.err);
  
      public static void solve() {
          char[] chars = in.nextLine().toCharArray();
  
          if (chars.length == 1) {
              print(chars);
              return;
          }
  
          int ab = 0;
          int ba = 0;
          for (int i = 0; i < chars.length-1; i++) {
              if (chars[i] == 'a' && chars[i+1] == 'b') ab++;
              if (chars[i] == 'b' && chars[i+1] == 'a') ba++;
          }
  
          if (ab > ba) {
              for (int i = 0; i < chars.length-1; i++) {
                  // ^ab
                  // ab$
                  if (chars[i] == 'a' && chars[i+1] == 'b') {
                      if (i == 0) {
                          chars[i] = 'b';
                          ab--;
                      } else if (i+1 == chars.length-1) {
                          chars[i+1] = 'a';
                          ab--;
                      }
                  }
                  // aaabbb
                  if (chars[i] == 'a' && chars[i+1] == 'a') {
                      chars[i] = 'b';
                      ba++;
                  }
  
                  if (ab == ba) break;
              }
          } else if (ab < ba) {
              for (int i = 0; i < chars.length-1; i++) {
                  // ^ba -> aa
                  // ba$ -> bb
                  if (chars[i] == 'b' && chars[i+1] == 'a') {
                      if (i == 0) {
                          chars[i] = 'a';
                          ba--;
                      } else if (i+1 == chars.length-1) {
                          chars[i + 1] = 'b';
                      }
                  }
                  // bbbaaa
                  if (chars[i] == 'b' && chars[i+1] == 'b') {
                      chars[i] = 'a';
                      ab++;
                  }
  
                  if (ab == ba) break;
              }
          }
          print(chars);
      }
  
      private static void print(char[] chars) {
          for (char c : chars) {
              out.print(c);
          }
          out.println();
      }
  
      // Boilerplate
      public static void main(String[] args) {
          int t = in.nextInt();
          while (t-- > 0) {
              solve();
          }
  
          err.close();
          out.close();
      }
  
      @SuppressWarnings("unused")
      static class FastScanner {
  
          StringTokenizer tok = new StringTokenizer("");
          BufferedReader in;
  
          FastScanner() {
              in = new BufferedReader(new InputStreamReader(System.in));
          }
  
          String next() {
              while (!tok.hasMoreElements()) {
                  try {
                      tok = new StringTokenizer(in.readLine());
                  } catch (IOException e) {
                      throw new RuntimeException(e);
                  }
              }
  
              return tok.nextToken();
          }
  
          String nextLine() {
              String line;
              try {
                  line = in.readLine();
              } catch (IOException e) {
                  throw new RuntimeException(e);
              }
              return line;
          }
  
          int nextInt() {
              return Integer.parseInt(next());
          }
  
          int[] nextIntArray(int n) {
              int[] arr = new int[n];
              for (int i = 0; i < n; i++) {
                  arr[i] = nextInt();
              }
              return arr;
          }
  
          List<Integer> nextIntegerList(int n) {
              ArrayList<Integer> list = new ArrayList<>(n);
              for (int i = 0; i < n; i++) {
                  list.add(nextInt());
              }
              return list;
          }
  
          long nextLong() {
              return Long.parseLong(next());
          }
  
          long[] nextLongArray(int n) {
              long[] arr = new long[n];
              for (int i = 0; i < n; i++) {
                  arr[i] = nextLong();
              }
              return arr;
          }
  
          List<Long> nextLongList(int n) {
              ArrayList<Long> list = new ArrayList<>(n);
              for (int i = 0; i < n; i++) {
                  list.add(nextLong());
              }
              return list;
          }
  
          ArrayList<Integer>[] nextGraph(int n, int m) {
              @SuppressWarnings("unchecked")
              ArrayList<Integer>[] adj = (ArrayList<Integer>[]) new ArrayList[n];
  
              for (int i = 0; i < n; i++) {
                  adj[i] = new ArrayList<>();
              }
  
              for (int i = 0; i < m; i++) {
                  int v = nextInt();
                  int t = nextInt();
                  adj[v - 1].add(t - 1);
                  adj[t - 1].add(v - 1);
              }
  
              return adj;
          }
      }
  }