import java.io.*;
public class Main {
static class EntradaRapida {
private final byte[] buffer = new byte[1 << 16];
private int indice = 0;
private int limite = 0;
if (indice >= limite) {
limite = flujoEntrada.read(buffer);
indice = 0;
if (limite <= 0) return -1;
}
return buffer[indice++];
}
StringBuilder texto = new StringBuilder();
int caracter;
do {
caracter = leer();
if (caracter == -1) return null;
} while (caracter <= 32);
while (caracter > 32) {
texto.append((char) caracter);
caracter = leer();
}
return texto.toString();
}
int caracter;
do {
caracter = leer();
if (caracter == -1) return -1;
} while (caracter <= 32);
int valor = 0;
while (caracter > 32) {
valor = valor * 10 + caracter - '0';
caracter = leer();
}
return valor;
}
}
static class ArbolSegmentos {
int base;
int[] arbol;
ArbolSegmentos(char[] cadena) {
int n = cadena.length;
base = 1;
while (base < n) {
base <<= 1;
}
arbol = new int[base << 1];
for (int i = 0; i < n; i++) {
arbol[base + i] = 1 << (cadena[i] - 'a');
}
for (int i = base - 1; i > 0; i--) {
arbol[i] = arbol[i << 1] |
arbol[i << 1 | 1];
}
}
void actualizar(int posicion, char letra) {
int nodo = base + posicion;
arbol[nodo] = 1 << (letra - 'a');
nodo >>= 1;
while (nodo > 0) {
arbol[nodo] = arbol[nodo << 1] |
arbol[nodo << 1 | 1];
nodo >>= 1;
}
}
int consultar(int izquierda, int derecha) {
izquierda += base;
derecha += base + 1;
int mascara = 0;
while (izquierda < derecha) {
if ((izquierda & 1) == 1) {
mascara |= arbol[izquierda++];
}
if ((derecha & 1) == 1) {
mascara |= arbol[--derecha];
}
izquierda >>= 1;
derecha >>= 1;
}
}
}
EntradaRapida lector = new EntradaRapida();
String texto
= lector.
leerTexto();
if (texto == null) return;
char[] cadena = texto.toCharArray();
int cantConsultas = lector.leerEntero();
ArbolSegmentos arbol = new ArbolSegmentos(cadena);
StringBuilder resultado = new StringBuilder();
for (int i = 0; i < cantConsultas; i++) {
int tipo = lector.leerEntero();
if (tipo == 1) {
int posicion = lector.leerEntero() - 1;
char letra = lector.leerTexto().charAt(0);
if (cadena[posicion] != letra) {
cadena[posicion] = letra;
arbol.actualizar(posicion, letra);
}
} else {
int izquierda = lector.leerEntero() - 1;
int derecha = lector.leerEntero() - 1;
int cantidad = arbol.consultar(
izquierda, derecha
);
resultado.append(cantidad).append('\n');
}
}
}
}