#include <bits/stdc++.h>
using namespace std;
const int MAXN = 100001;
int n;
int freq[55];
int dp[MAXN];
long long int inv[MAXN];
long long int fact[MAXN];
long long int ans[55][55];
int gcd(int a, int b) { return b ? gcd(b, a % b) : a; }
int mapea(char a) { return islower(a) ? a - 'a' : a - 'A' + 26; };
void remove(int f) {
  for (int sum = f; sum <= n; sum++) {
    dp[sum] -= dp[sum - f];
    dp[sum] += 1000000007;
    dp[sum] %= 1000000007;
  }
}
void add(int f) {
  for (int sum = n; sum >= f; sum--) {
    dp[sum] += dp[sum - f];
    dp[sum] %= 1000000007;
  }
}
long long int power(long long int a, int b) {
  long long int r = 1;
  while (b) {
    if (b & 1) r = r * a % 1000000007;
    b >>= 1;
    a = a * a % 1000000007;
  }
  return r;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  fact[0] = 1;
  for (long long int i = 1; i < MAXN; i++)
    fact[i] = fact[i - 1] * i % 1000000007;
  for (int i = 0; i < MAXN; i++) inv[i] = power(fact[i], 1000000007 - 2);
  string s;
  int q, a, b;
  cin >> s >> q;
  n = s.size();
  for (int i = 0; i < s.size(); i++) freq[mapea(s[i])]++;
  dp[0] = 1;
  for (int id = 0; id < 52; id++) {
    if (!freq[id]) continue;
    add(freq[id]);
  }
  long long int c = 2LL * fact[n / 2] * fact[n / 2] % 1000000007;
  for (int i = 0; i < 52; i++) c = c * inv[freq[i]] % 1000000007;
  for (int i = 0; i < 52; i++)
    for (int j = 0; j < 52; j++) ans[i][j] = -1;
  for (int i = 0; i < q; i++) {
    cin >> a >> b;
    a = mapea(s[a - 1]);
    b = mapea(s[b - 1]);
    if (ans[a][b] == -1) {
      remove(freq[a]);
      if (a != b) remove(freq[b]);
      ans[a][b] = ans[b][a] = c * dp[n / 2] % 1000000007;
      add(freq[a]);
      if (a != b) add(freq[b]);
    }
    cout << ans[a][b] << '\n';
  }
  return 0;
}
