#include #include #include #include #include #include #include int fact(int n) { if(n==0||n==1) return 1; else return n*fact(n-1); } int main() { char* s = (char *)malloc(512000 * sizeof(char)); scanf("%s", s); //initialize(s); int q; scanf("%d", &q); for(int a0 = 0; a0 < q; a0++){ int l; int r; int a[26]={0,0}; int b[26]={0,0}; scanf("%d %d", &l, &r); int result,count=0; for(int i=l-1;i<=r-1;i++) { // printf("%d\n",i); // printf("_______\n"); a[s[i]-'a']++; // printf("a[%d]-->%d\n",s[i]-'a',a[s[i]-'a']); if(a[s[i]-'a']%2==0) { count++; // printf("count--->%d\n",count); b[s[i]-97]++; //a[s[i]]=0; } } int rep=0; int sl=(r-l+1)-(count*2); if(count==0) { printf("%d",(l-r-1)); } else if(sl==0) { printf("%d\n",fact(count)/fact(rep)); } else { for(int i=0;i<26;i++) { if(b[i]>1) { rep+=(b[i]-1); } } printf("%d\n",fact(count)/fact(rep)*sl); }//printf("%d\n", result); } return 0; }