#include <cstdio>
#include <cstring>
const int maxn = 20000;
struct node{node *ch[26], *f; int l, xx;} a[maxn], *head, *last;
char ch1[maxn], ch2[maxn], s1[maxn], s2[maxn];
int n, top, ok, t;

void add(int x)
{
    node *p = &a[++top], *mid;
    p->l = last->l + 1;
    p->xx = p->l;
    mid = last, last = p;
    for (; mid && !mid->ch[x]; mid = mid->f) mid->ch[x] = p;
    if (!mid) p->f = head; else 
    if (mid->l + 1 == mid->ch[x]->l) p->f = mid->ch[x]; else
    {
        node *q = mid->ch[x], *r = &a[++top];
        *r = *q, q->f = p->f = r;
        r->l = mid->l + 1;
        r->xx = p->l;
        for (; mid && mid->ch[x] == q; mid = mid->f) mid->ch[x] = r;
    }
}

void work(char *r1)
{
    memset(a, 0sizeof(a));
    head = last = &a[0], top = 0;
    for (int i = n; i < n + n; ++i) r1[i] = r1[i - n];
    for (int i = 0; i < n + n; ++i) add(r1[i] - 'a');
    last = head;
    for (int i = 0; i < n; ++i)
    for (int j = 0; j <= 25; ++j)
        if (last->ch[j]) 
        {
        last = last->ch[j];
        break;
        }
    printf("%d\n", last->xx - n + 1);
}

int main()
{
    freopen("poj1509.in""r", stdin);
    freopen("poj1509.out""w", stdout);
    for (scanf("%d\n", &t); t; --t)
    {
    scanf("%s\n", ch1);
    n = strlen(ch1);
    work(ch1);
    }
    return 0;
}