#include <bits/stdc++.h>
using namespace std;
template <typename T>
inline void read(T &num) {
  T x = 0, f = 1;
  char ch = getchar();
  for (; ch > '9' || ch < '0'; ch = getchar())
    if (ch == '-') f = -1;
  for (; ch <= '9' && ch >= '0'; ch = getchar())
    x = (x << 3) + (x << 1) + (ch ^ '0');
  num = x * f;
}
int ttt, n, a[200005], b[30], stk[200005], stk2[200005];
char s[200005];
int main() {
  read(ttt);
  a[0] = 114514;
  while (ttt--) {
    scanf("%s", s + 1);
    n = strlen(s + 1);
    for (int i = 1; i <= n; i++) a[i] = s[i] - 'a';
    int ff = 0, mx = 0;
    for (int i = 0; i < 26; i++) b[i] = 0;
    for (int i = 2; i <= n; i++) {
      if (a[i] == a[i - 1]) ff++, b[a[i]]++;
    }
    for (int i = 0; i < 26; i++) mx = max(mx, b[i]);
    printf("%d\n", max((ff + 1) >> 1, mx) + 1);
    int t1 = 0, t2 = 0;
    for (int i = 1; i <= n; i++) {
      stk[++t1] = a[i];
      if (a[i] != a[i - 1]) continue;
      if (!t2 || stk[t1] == stk[stk2[t2]]) {
        stk2[++t2] = t1;
        continue;
      }
      mx = 0;
      for (int c = 0; c < 26; c++)
        if (b[c] > b[mx]) mx = c;
      if (b[mx] * 2 < ff || stk[t1] == mx || stk[stk2[t2]] == mx) {
        ff -= 2;
        b[stk[t1]]--;
        b[stk[stk2[t2]]]--;
        printf("%d %d\n", stk2[t2], t1 - 1);
        stk[stk2[t2]] = stk[t1];
        t1 = stk2[t2];
        --t2;
      } else
        stk2[++t2] = t1;
    }
    for (int lst = t1, i = t1; i; i--) {
      if (i == 1 || stk[i - 1] == stk[i])
        printf("%d %d\n", i, lst), lst = i - 1;
    }
  }
  return 0;
}
