#include <bits/stdc++.h>
using namespace std;
int f[4][11][11][100010] = {0};
string s;
int s_len, q;
int get_id(char x) {
  if (x == 'A') return 0;
  if (x == 'T') return 1;
  if (x == 'G') return 2;
  if (x == 'C') return 3;
}
int lowbit(int x) { return x & -x; }
void add(int x, int y, int z, int pos, int delta) {
  while (pos <= s_len) {
    f[x][y][z][pos] += delta;
    pos += lowbit(pos);
  }
}
int sum(int x, int y, int z, int pos) {
  int rel = 0;
  while (pos > 0) {
    rel += f[x][y][z][pos];
    pos -= lowbit(pos);
  }
  return rel;
}
int main() {
  cin >> s;
  s_len = (int)s.length();
  for (int i = 0; i < s_len; i++) {
    for (int j = 0; j < 10; j++) {
      add(get_id(s[i]), (i + 1) % (j + 1), j + 1, i + 1, 1);
    }
  }
  cin >> q;
  for (int j = 1; j <= q; j++) {
    int typ;
    cin >> typ;
    if (typ == 1) {
      int x;
      char c;
      cin >> x;
      cin >> c;
      for (int i = 0; i < 10; i++) {
        add(get_id(s[x - 1]), x % (i + 1), i + 1, x, -1);
        add(get_id(c), x % (i + 1), i + 1, x, 1);
      }
      s[x - 1] = c;
    } else {
      int ans = 0, l, r, cur_len;
      string cur;
      cin >> l >> r;
      cin >> cur;
      cur_len = (int)cur.length();
      for (int i = 0; i < cur_len; i++) {
        ans += sum(get_id(cur[i]), (l + i) % cur_len, cur_len, r) -
               sum(get_id(cur[i]), (l + i) % cur_len, cur_len, l - 1);
      }
      cout << ans << endl;
    }
  }
  return 0;
}
