#include <bits/stdc++.h>
using namespace std;
char s[100001], t[100001];
int q, opt, l, r, n, u[200], num[100][100], c[4][56][100001];
int lowbit(int x) { return x & -x; }
int calc(int x, int k) { return (x - 1) % k + 1; }
void add(int p, int q, int x, int k) {
  while (x <= n) {
    c[p][q][x] += k;
    x += lowbit(x);
  }
}
int sum(int p, int q, int x) {
  int ret = 0;
  while (x) {
    ret += c[p][q][x];
    x -= lowbit(x);
  }
  return ret;
}
int main() {
  u['A'] = 0;
  u['C'] = 1;
  u['T'] = 2;
  u['G'] = 3;
  for (int i = 1; i <= 10; i++)
    for (int j = 1; j <= i; j++) num[i][j] = ++num[0][0];
  scanf("%s", s + 1);
  n = strlen(s + 1);
  for (int k = 0; k < 4; k++)
    for (int i = 1; i <= n; i++)
      if (u[s[i]] == k)
        for (int j = 1; j <= 10; j++) add(k, num[j][calc(i, j)], i, 1);
  scanf("%d", &q);
  for (int i = 1; i <= q; i++) {
    scanf("%d", &opt);
    if (opt == 2) {
      scanf("%d%d%s", &l, &r, t + 1);
      int len = strlen(t + 1), ans = 0;
      for (int j = 1; j <= len; j++) {
        if (l + j - 1 > r) break;
        int k = num[len][calc(l + j - 1, len)];
        ans = ans + sum(u[t[j]], k, r) - sum(u[t[j]], k, l - 1);
      }
      printf("%d\n", ans);
    } else {
      scanf("%d%s", &l, t + 1);
      if (s[l] == t[1]) continue;
      for (int j = 1; j <= 10; j++) {
        add(u[s[l]], num[j][calc(l, j)], l, -1);
        add(u[t[1]], num[j][calc(l, j)], l, 1);
      }
      s[l] = t[1];
    }
  }
  return 0;
}
