
import java.io.*;

public class Main {

    static class EntradaRapida {
        private final BufferedInputStream flujo =
            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 = flujo.read(buffer);
                indice = 0;

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

            return buffer[indice++];
        }

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

        String leerCadena() 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();
        }

        char leerLetra() throws IOException {
            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;
            }

            return Integer.bitCount(mascara);
        }
    }

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

        System.out.print(resultado);
    }

    public static void main(String[] args) throws IOException {
        resolver(new EntradaRapida());
    }
}