#include <bits/stdc++.h>
using namespace std;
long long p1 = 2137;
long long m1 = 1000000007;
long long p2 = 997;
long long m2 = 1000000009;
long long pref1[1000007];
long long pref2[1000007];
long long suf1[1000007];
long long suf2[1000007];
long long pott1[1000007];
long long pott2[1000007];
void solve()
{
string s;
cin >> s;
int n = s.size();
long long pot1 = p1;
long long pot2 = p2;
pott1[0] = 1;
pott2[0] = 1;
for(int i = 1; i <= n; i++)
{
pott1[i] = pott1[i - 1] * p1;
pott1[i] %= m1;
pott2[i] = pott2[i - 1] * p2;
pott2[i] %= m2;
}
for(int i = 1; i <= n; i++)
{
pref1[i] = pref1[i - 1] + pot1 * (long long)s[i - 1];
pref1[i] %= m1;
pot1 *= p1;
pot1 %= m1;
pref2[i] = pref2[i - 1] + pot2 * (long long)s[i - 1];
pref2[i] %= m2;
pot2 *= p2;
pot2 %= m2;
}
suf1[n + 1] = 0;
suf2[n + 1] = 0;
for(int i = n; i >= 1; i--)
{
suf1[i] = p1 * suf1[i + 1] + p1 * (long long)s[i - 1];
suf1[i] %= m1;
suf2[i] = p2 * suf2[i + 1] + p2 * (long long)s[i - 1];
suf2[i] %= m2;
}
int odp = 0;
int lewo = 0, prawo = n + 1;
//cout << (pref1[2] - pref1[1] + m1) % m1 << endl;
//cout << (pott1[1] * (suf1[5 - 1] - ((pott1[1] * suf1[5]) % m1) + m1)) % m1 << endl;
while(lewo < prawo)
{
int cur = 1;
while((pref1[lewo + cur] - pref1[lewo] + m1) % m1 != (pott1[lewo] * (suf1[prawo - cur] - ((pott1[cur] * suf1[prawo]) % m1) + m1)) % m1 || (pref2[lewo + cur] - pref2[lewo] + m2) % m2 != (pott2[lewo] * (suf2[prawo - cur] - ((pott2[cur] * suf2[prawo]) % m2) + m2)) % m2)
{
cur++;
}
//cout << cur << endl;
lewo += cur;
prawo -= cur;
if(lewo < prawo)
{
odp += 2;
}
else
{
odp++;
}
}
cout << odp << endl;
}
int main()
{
int t;
cin >> t;
while(t--)
{
solve();
}
return 0;
}