func_code_string: #include <bits/stdc++.h>   using namespace std;   int f[11][11][4][100010];   int n;   char s[100010];   char c[100010];   int ch(char s) {     if (s ==  A )       return 0;     else if (s ==  C )       return 1;     else if (s ==  T )       return 2;     else if (s ==  G )       return 3;     return -1;   }   void Add(int *tr, int x, int d) {     for (; x <= n; x += x & (-x)) {       tr[x] += d;     }   }   int Sum(int *tr, int x) {     if (x == 0) return 0;     int s = 0;     while (x) {       s += tr[x];       x -= x & (-x);     }     return s;   }   int main() {     scanf( %s , s);     n = strlen(s);     for (int i = n - 1; i >= 0; i--) s[i + 1] = s[i];     s[0] = 0;     for (int i = 1; i <= n; i++)       for (int j = 1; j <= 10; j++) Add(f[j][i % j][ch(s[i])], i, 1);     int q, x, d, l, r;     scanf( %d , &q);     while (q--) {       scanf( %d , &x);       if (x == 1) {         scanf( %d%s , &d, c);         for (int i = 1; i <= 10; i++) Add(f[i][d % i][ch(s[d])], d, -1);         s[d] = c[0];         for (int i = 1; i <= 10; i++) Add(f[i][d % i][ch(s[d])], d, 1);       } else {         scanf( %d%d%s , &l, &r, c);         int len = strlen(c);         int ans = 0;         for (int i = 0; i < len; i++)           ans += Sum(f[len][(l + i) % len][ch(c[i])], r) -                  Sum(f[len][(l + i) % len][ch(c[i])], l - 1);         printf( %d n , ans);       }     }     return 0;   }   