#include <bits/stdc++.h>
using namespace std;
const int INF = 0x3f3f3f3f;
char str[100010];
struct BIT {
  int d[100010];
  void add(int x, int y) {
    while (x <= 100001) {
      d[x] += y;
      x += x & -x;
    }
  }
  int sum(int x) {
    int ans = 0;
    while (x) {
      ans += d[x];
      x -= x & -x;
    }
    return ans;
  }
  int get(int l, int r) { return sum(r) - sum(l - 1); }
} t[12][12][5];
int mapp[100];
int main() {
  int q;
  mapp['A'] = 0;
  mapp['T'] = 1;
  mapp['C'] = 2;
  mapp['G'] = 3;
  scanf("%s", str + 1);
  int len = strlen(str + 1);
  for (int i = 1; i <= 10; i++)
    for (int j = 1; j <= len; j++) t[i][j % i][mapp[str[j]]].add(j, 1);
  scanf("%d", &q);
  while (q--) {
    int op;
    scanf("%d", &op);
    char s2[15];
    if (op == 1) {
      int x;
      scanf("%d%s", &x, s2);
      for (int i = 1; i <= 10; i++) {
        t[i][x % i][mapp[str[x]]].add(x, -1);
        t[i][x % i][mapp[s2[0]]].add(x, 1);
      }
      str[x] = s2[0];
    } else {
      int ans = 0;
      int l, r;
      scanf("%d%d%s", &l, &r, s2);
      int l2 = strlen(s2);
      for (int i = 0; i < l2; i++)
        ans += t[l2][(l + i) % l2][mapp[s2[i]]].get(l, r);
      printf("%d\n", ans);
    }
  }
  return 0;
}
