abcdabcdab
5
2 2 8 ab
2 1 10 ab
1 3 a
1 4 b
2 1 4 ab

1
3
2

#include <bits/stdc++.h>
using namespace std;
char s[100005];
bitset<100005> B[30], one, normal;
int main() {
  scanf("%s", s);
  int n = strlen(s);
  one.set();
  for (int i = (0); i < (n); i++) B[s[i] - 'a'][i] = 1;
  int m;
  scanf("%d", &m);
  while (m--) {
    int co;
    scanf("%d", &co);
    if (co == 1) {
      int x;
      char ss[10];
      scanf("%d%s", &x, ss);
      x--;
      B[s[x] - 'a'][x] = 0;
      s[x] = ss[0];
      B[s[x] - 'a'][x] = 1;
    } else {
      int l, r;
      char ss[100005];
      scanf("%d%d%s", &l, &r, ss);
      l--;
      r--;
      int _n = strlen(ss);
      normal = ((one >> (100004 - (r - _n + 1))) & (one << l));
      for (int i = (0); i < (_n); i++) normal &= B[ss[i] - 'a'] >> i;
      printf("%d\n", (int)normal.count());
    }
  }
  return 0;
}
