#!/bin/python3 import sys def initialize(s): # This function is called once before all queries. s = "salut" def answerQuery(s, l, r): # Return the answer for this query modulo 1000000007. # substring myString = s[l-1 : r] allLetters = [0]*26 for letter in myString: allLetters[ord(letter) - ord('a')] += 1 nombreImpairs, occurrenceImpairs = findMaxImpair(allLetters) if (nombreImpairs != 0): return int(factoriel(pairs(allLetters)) * nombreImpairs*pairs(allLetters)*occurrenceImpairs) else: return int(factoriel(pairs(allLetters))) def factoriel(n): if (n == 0): return 1 else: return n * factoriel(n-1) def findMaxImpair(liste): maxi = 0 for nombre in liste: if (nombre > maxi and nombre%2 == 1): maxi = nombre countMaxi = 0 for nombre in liste: if nombre == maxi: countMaxi += 1 return maxi, countMaxi def pairs(liste): pairs = 0 for nombre in liste: if nombre % 2 == 0: pairs += nombre/2 return pairs if __name__ == "__main__": s = input().strip() initialize(s) q = int(input().strip()) for a0 in range(q): l, r = input().strip().split(' ') l, r = [int(l), int(r)] result = answerQuery(s, l, r) print(result)