#include #include #include using namespace std; typedef long long ll; const int Maxl=2000005; int fa[Maxl],ran2[Maxl],a[Maxl],b[Maxl]; int sa[Maxl],lcp[Maxl],ran[Maxl],rad[Maxl<<1],tmp[Maxl]; int n,k; string S="",s1,s2; ll res,cur; void init(){for(int i=0;i=j&&i+j<(n<<1|1)&&s[i-j]==s[i+j])++j; rad[i]=j; while(i>=k&&rad[i-k]=0;i--)sa[-- wd[x[i]]]=i; for(j=1,p=1;p=j)y[p ++] = sa[i] - j; for(i=0;i=0;i--)sa[--wd[wv[i]]]=y[i]; for(t=x,x=y,y=t,p=1,x[sa[0]]=0,i=1;iquery[Maxl]; vectorin[Maxl]; void Init(){ cin>>s1>>s2; S=s1+"$"+s2; n=S.size(); da(S,n,128);Init_LCP(); manacher(); } void Work(){ Init(); //odd cur=0;init(); for(int i=0;i(m+1)/2;--i) for(int j=0;j=1;i-=2){ for(int j=0;js1.size())add_b(in[i][j]); for(int j=0;jm/2;i--) for(int j=0;j=2;i-=2){ for(int j=0;js1.size())add_b(in[i][j]); for(int j=0;j