
import java.io.*;

public class Main {

    static class EntradaRapida {
        private final BufferedInputStream flujoEntrada =
            new BufferedInputStream(System.in);

        private final byte[] buffer = new byte[1 << 16];
        private int indice = 0;
        private int limite = 0;

        private int leer() throws IOException {
            if (indice >= limite) {
                limite = flujoEntrada.read(buffer);
                indice = 0;

                if (limite <= 0) return -1;
            }

            return buffer[indice++];
        }

        String leerTexto() throws IOException {
            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 leerEntero() throws IOException {
            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;
            }

            return Integer.bitCount(mascara);
        }
    }

    public static void main(String[] args) throws IOException {

        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');
            }
        }

        System.out.print(resultado);
    }
}
