Para efeitos da nota atribuída à resolução de exercícios ao longo do semestre - Submeter até 23:59 de 22 de Novembro
(o problema continuará depois disponível para submissão, mas sem contar para a nota)
[para perceber o contexto do problema deve ler o guião da aula #06]


[DAA 024] Letras distintas

Suponha que tem inicialmente uma string s constituída por letras minúsculas do alfabeto inglês {a, b, c, ..., z}. Uma substring s[a,b] da string s é uma subsequência contígua formada pelas letras sa, sap1, ..., sb. Por exemplo, "ritmo", "alg" e "gori" são substrings de "algoritmo", mas "gomo", "alri" ou "imo" não o são.

Neste problema vai receber uma série de queries, de ações a tomar, que podem ser de dois tipos diferentes:

O Problema

Dada uma string inicial s e um lista de queries como atrás descrito, a sua tarefa é indicar o número de letras diferentes para cada uma das queries que pedem o número de diferentes letras numa substring.

Input

Na primeira linha vem uma string s constituída unicamente por letras minúsculas do alfabeto inglês.

Na segunda linha bem um número Q indicando o número de queries a responder. Seguem-se Q linhas cada uma indicando uma querie num dos dois formatos seguintes:

Output

O output deve ter uma linha por cada query do tipo 2 com a resposta correspondente, ou seja o número de letras distintas na substring pedida.

Restrições

São garantidos os seguintes limites em todos os casos de teste que irão ser colocados ao programa:

1 ≤ |s| ≤ 100 000     Tamanho da string s
1 ≤ Q ≤ 100 000     Número de queries
1 ≤ pos ≤ |s|     Posição da letra a substituir numa query de tipo 1
1 ≤ a ≤ b ≤ |s|     Posição inicial e final da substring a considerar numa query de tipo 2

Exemplo de Input

abacaba
5
2 1 4
1 4 b
1 5 b
2 4 6
2 1 7

Exemplo de Output

3
1
2  

Explicação do Input/Output


Desenho e Análise de Algoritmos (CC2001)
DCC/FCUP - Faculdade de Ciências da Universidade do Porto