#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef vector <int> vi;
#define inf (int)1e9
#define maxn 1510
char T[maxn];
int n, c[maxn];
int SA[maxn], RA[maxn], tempRA[maxn], tempSA[maxn];
void countingSort(int k){
int i, sum, maxi = max(300, n);
memset(c, 0, sizeof c);
for(i=0; i<n; i++) c[i + k < n ? RA[i+k] : 0]++;
for(i = sum = 0; i < maxi; i++){
int t = c[i]; c[i] = sum; sum += t;
}
for(i=0; i<n; i++)
tempSA[c[SA[i]+k < n ? RA[SA[i]+k] : 0]++] = SA[i];
for(i=0; i<n; i++) SA[i] = tempSA[i];
}
void constructSA(){
int i, r, k;
for(i=0; i<n; i++) SA[i] = i, RA[i] = T[i];
for(k=1; k<n; k<<=1){
countingSort(k); countingSort(0);
tempRA[SA[0]] = r = 0;
for(i=1; i<n; i++)
tempRA[SA[i]] = (RA[SA[i]] == RA[SA[i-1]] && RA[SA[i]+k] == RA[SA[i-1]+k]) ? r : ++r;
for(i=0; i<n; i++) RA[i] = tempRA[i];
if(RA[SA[n-1]] == n-1) break;
}
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
//freopen("in.txt", "r", stdin);
//freopen("out.txt", "w", stdout);
int tc; cin >> tc;
while(tc--){
cin >> T; n = strlen(T);
T[n++] = '$'; T[n] = '\0';
constructSA();
int cnt = 0;
for(int i=0; SA[1]+i < n - 1; i++)
cnt++;
for(int i=2; i<n; i++){
bool flag = true;
for(int j=0; SA[i] + j < n - 1; j++){
if(SA[i-1] + j >= n - 1 || T[SA[i] + j] != T[SA[i-1] + j]) flag = false;
if(!flag) cnt++;
}
}
cout << cnt << "\n";
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnR5cGVkZWYgbG9uZyBsb25nIGxsOwp0eXBlZGVmIHZlY3RvciA8aW50PiB2aTsKI2RlZmluZSBpbmYgKGludCkxZTkKCiNkZWZpbmUgbWF4biAxNTEwCgpjaGFyIFRbbWF4bl07CmludCBuLCBjW21heG5dOwppbnQgU0FbbWF4bl0sIFJBW21heG5dLCB0ZW1wUkFbbWF4bl0sIHRlbXBTQVttYXhuXTsKCnZvaWQgY291bnRpbmdTb3J0KGludCBrKXsKICAgIGludCBpLCBzdW0sIG1heGkgPSBtYXgoMzAwLCBuKTsKICAgIG1lbXNldChjLCAwLCBzaXplb2YgYyk7CiAgICBmb3IoaT0wOyBpPG47IGkrKykgY1tpICsgayA8IG4gPyBSQVtpK2tdIDogMF0rKzsKICAgIGZvcihpID0gc3VtID0gMDsgaSA8IG1heGk7IGkrKyl7CiAgICAgICAgaW50IHQgPSBjW2ldOyBjW2ldID0gc3VtOyBzdW0gKz0gdDsKICAgIH0KICAgIGZvcihpPTA7IGk8bjsgaSsrKQogICAgICAgIHRlbXBTQVtjW1NBW2ldK2sgPCBuID8gUkFbU0FbaV0ra10gOiAwXSsrXSA9IFNBW2ldOwogICAgZm9yKGk9MDsgaTxuOyBpKyspIFNBW2ldID0gdGVtcFNBW2ldOwp9CnZvaWQgY29uc3RydWN0U0EoKXsKICAgIGludCBpLCByLCBrOwogICAgZm9yKGk9MDsgaTxuOyBpKyspIFNBW2ldID0gaSwgUkFbaV0gPSBUW2ldOwogICAgZm9yKGs9MTsgazxuOyBrPDw9MSl7CiAgICAgICAgY291bnRpbmdTb3J0KGspOyBjb3VudGluZ1NvcnQoMCk7CiAgICAgICAgdGVtcFJBW1NBWzBdXSA9IHIgPSAwOwogICAgICAgIGZvcihpPTE7IGk8bjsgaSsrKQogICAgICAgICAgICB0ZW1wUkFbU0FbaV1dID0gKFJBW1NBW2ldXSA9PSBSQVtTQVtpLTFdXSAmJiBSQVtTQVtpXStrXSA9PSBSQVtTQVtpLTFdK2tdKSA/IHIgOiArK3I7CiAgICAgICAgZm9yKGk9MDsgaTxuOyBpKyspIFJBW2ldID0gdGVtcFJBW2ldOwogICAgICAgIGlmKFJBW1NBW24tMV1dID09IG4tMSkgYnJlYWs7CiAgICB9Cn0KCmludCBtYWluKCl7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUobnVsbHB0cik7CiAgICAvL2ZyZW9wZW4oImluLnR4dCIsICJyIiwgc3RkaW4pOwogICAgLy9mcmVvcGVuKCJvdXQudHh0IiwgInciLCBzdGRvdXQpOwogICAgaW50IHRjOyBjaW4gPj4gdGM7CiAgICB3aGlsZSh0Yy0tKXsKICAgICAgICBjaW4gPj4gVDsgbiA9IHN0cmxlbihUKTsKICAgICAgICBUW24rK10gPSAnJCc7IFRbbl0gPSAnXDAnOwogICAgICAgIGNvbnN0cnVjdFNBKCk7CiAgICAgICAgaW50IGNudCA9IDA7CiAgICAgICAgZm9yKGludCBpPTA7IFNBWzFdK2kgPCBuIC0gMTsgaSsrKQogICAgICAgICAgICBjbnQrKzsKICAgICAgICBmb3IoaW50IGk9MjsgaTxuOyBpKyspewogICAgICAgICAgICBib29sIGZsYWcgPSB0cnVlOwogICAgICAgICAgICBmb3IoaW50IGo9MDsgU0FbaV0gKyBqIDwgbiAtIDE7IGorKyl7CiAgICAgICAgICAgICAgICBpZihTQVtpLTFdICsgaiA+PSBuIC0gMSB8fCBUW1NBW2ldICsgal0gIT0gVFtTQVtpLTFdICsgal0pIGZsYWcgPSBmYWxzZTsKICAgICAgICAgICAgICAgIGlmKCFmbGFnKSBjbnQrKzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBjb3V0IDw8IGNudCA8PCAiXG4iOwogICAgfQogICAgcmV0dXJuIDA7Cn0=