#include <bits/stdc++.h>
using namespace std;
string s;
int q, pos, l, r, t;
char c;
int alp[26][500010];
int lowbit(int x) { return x & (-x); }
void update(int id, int i, int x) {
  i++;
  int len = s.size();
  while (i <= len) {
    alp[id][i] += x;
    i += lowbit(i);
  }
}
int query(int id, int i) {
  int res = 0;
  while (i) {
    res += alp[id][i];
    i -= lowbit(i);
  }
  return res;
}
int main() {
  cin >> s;
  int len = s.size();
  for (int i = 0; i < len; i++) {
    update(s[i] - 'a', i, 1);
  }
  cin >> q;
  while (q--) {
    cin >> t;
    if (t == 1) {
      cin >> pos >> c;
      pos--;
      update(s[pos] - 'a', pos, -1);
      s[pos] = c;
      update(s[pos] - 'a', pos, 1);
    } else {
      cin >> l >> r;
      int cnt = 0;
      for (int i = 0; i < 26; i++) {
        if (query(i, r) - query(i, l - 1) > 0) cnt++;
      }
      printf("%d\n", cnt);
    }
  }
  return 0;
}
