Contests no Beecrowd

#70
Made by: Crazynds
1024MB
0.35s

Você está organizando um contest na plataforma beecrowd para os alunos da sua universidade. Tradicionalmente, em competições de programação, os problemas são identificados por letras maiúsculas em ordem alfabética: 'A', 'B', 'C', e assim por diante. No entanto, ao criar um contest no beecrowd, os problemas são listados na ordem em que foram adicionados, sem permitir a reordenação manual.

Para manter a tradição, você deseja selecionar uma subsequência de problemas cujas iniciais correspondam, em ordem, às letras 'A', 'B', 'C', etc. Dado o conjunto de iniciais dos problemas na ordem em que foram adicionados ao contest, determine de quantas maneiras diferentes é possível selecionar os problemas de tamanho $k$ que seja em ordem alfabetica, e ao criar o contest no beecrowd mantenha na mesma ordem.

Input

A primeira linha contém dois inteiros $n$ e $k$ $(1 \le n \le 10^6, 1 \le k \le 26)$, representando o número total de problemas adicionados ao contest e o número de problemas que você deseja selecionar, respectivamente.

A segunda linha contém uma string de $n$ caracteres maiúsculos, cada um representando a inicial do título de um problema, na ordem em que foram adicionados no beecrowd.

Output

Imprima um único inteiro: o número de subsequências distintas de tamanho $k$ que podem ser formadas a partir das iniciais fornecidas, seguindo a ordem alfabética tradicional ('A' a 'Z').


Input Example
Output Example
6 3
ABCABC
4

Explanation 1:
As subsequências válidas de tamanho 3 que seguem a ordem alfabética são: [(A,1), (B,2), (C,3)] | [(A,1), (B,2), (C,6)] | [(A,1), (B,5), (C,6)] | [(A,4), (B,5), (C,6)]


15 4
BDAADBBACDADBAC
8