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 = flujo.read(buffer);
indice = 0;
if (limite <= 0) return -1;
}
return buffer[indice++];
}
int caracter;
do {
caracter = leer();
if (caracter == -1) return -1;
} while (caracter <= 32);
int numero = 0;
while (caracter > 32) {
numero = numero * 10 + caracter - '0';
caracter = leer();
}
return numero;
}
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();
} while (caracter <= 32 && caracter != -1);
return (char) caracter;
}
}
static class ArbolSegmentos {
private final int base;
private final int[] arbol;
ArbolSegmentos(char[] cadena) {
int tamano = cadena.length;
int potencia = 1;
while (potencia < tamano) {
potencia <<= 1;
}
base = potencia;
arbol = new int[base << 1];
construir(cadena);
}
private void construir(char[] cadena) {
for (int i = 0; i < cadena.length; 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');
for (nodo >>= 1; nodo > 0; nodo >>= 1) {
arbol[nodo] = arbol[nodo << 1] |
arbol[nodo << 1 | 1];
}
}
int consultar(int izquierda, int derecha) {
int mascara = 0;
izquierda += base;
derecha += base + 1;
while (izquierda < derecha) {
if ((izquierda & 1) != 0) {
mascara |= arbol[izquierda++];
}
if ((derecha & 1) != 0) {
mascara |= arbol[--derecha];
}
izquierda >>= 1;
derecha >>= 1;
}
}
}
static void resolver
(EntradaRapida lector
) throws IOException {
String entrada
= lector.
leerCadena();
if (entrada == null) return;
char[] cadena = entrada.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.leerLetra();
if (cadena[posicion] != letra) {
cadena[posicion] = letra;
arbol.actualizar(posicion, letra);
}
} else {
int izquierda = lector.leerEntero() - 1;
int derecha = lector.leerEntero() - 1;
resultado.append(
arbol.consultar(izquierda, derecha)
).append('\n');
}
}
}
resolver(new EntradaRapida());
}
}