#include <bits/stdc++.h>
using namespace std;
int getc(char x) {
  if (x == 'A') return 0;
  if (x == 'G') return 1;
  if (x == 'T') return 2;
  return 3;
}
int tr[11][11][5][100010], len;
char s[100010];
void add(int a, int b, int c, int x, int v) {
  for (; x <= len; x += x & -x) tr[a][b][c][x] += v;
}
int sum(int a, int b, int c, int x) {
  int tmp = 0;
  for (; x; x -= x & -x) tmp += tr[a][b][c][x];
  return tmp;
}
int main() {
  scanf("%s", s + 1);
  len = strlen(s + 1);
  for (int i = 1; i <= len; i++) {
    int t = getc(s[i]);
    for (int j = 1; j <= 10; j++) add(j, i % j, t, i, 1);
  }
  int n;
  scanf("%d", &n);
  while (n--) {
    int t;
    scanf("%d", &t);
    if (t == 1) {
      int p;
      char ch[5];
      scanf("%d%s", &p, ch);
      for (int j = 1; j <= 10; j++)
        add(j, p % j, getc(s[p]), p, -1), add(j, p % j, getc(ch[0]), p, 1);
      s[p] = ch[0];
    } else {
      int l, r;
      char ch[15];
      scanf("%d%d%s", &l, &r, ch + 1);
      int lenc = strlen(ch + 1), ans = 0;
      for (int i = 1; i <= lenc; i++)
        ans += sum(lenc, (l + i - 1) % lenc, getc(ch[i]), r) -
               sum(lenc, (l + i - 1) % lenc, getc(ch[i]), l - 1);
      printf("%d\n", ans);
    }
  }
  return 0;
}
