代码:
#include <bits/stdc++.h>
using namespace std;
const long long N=1e6+7,MOD=1e9+7;
long long T,n;
string s;
long long nxt[N],ans[N];
long long ans_final=1;
inline void getnext(){
nxt[0]=-1;
int i=1,j=0;
while(i<n){
while(s[i]^s[j]&&(~j)) j=nxt[j];
i++,j++,nxt[i]=j,ans[i]=ans[j]+1;
}
}
//abbcab
inline void getnum(){
int i=1,j=0;
while(i<n){
while(s[i]^s[j]&&(~j)) j=nxt[j];
while((j<<1)>=i) j=nxt[j];
i++,j++;
if(~j) ans_final=1ll*ans_final*(ans[j]+1)%MOD;
}
}
int main(){
cin>>T;
while(T--){
cin>>s;
n=s.length();
memset(nxt,0,sizeof(nxt));
memset(ans,0,sizeof(ans));
ans[1]=1;
ans_final=1;
getnext();
getnum();
cout<<ans_final<<endl;
}
return 0;
}