3003: 卡片游戏

时间限制:1000 ms 内存限制:128 MB
上传者:
提交:33 通过:9

题目描述

$ctr$与$fdf$在玩一个游戏,$ctr$有$n$张卡片,每张卡片上写了一个大写字母($A-Z$)。$fdf$要从中选出$k$张卡片$(1 \leq k \leq n)$,$ctr$会根据$fdf$选择的卡片奖励给$fdf$一定数目的硬币。
$ctr$制定了这样的奖励规则:
对于$fdf$的第$i$张卡片$(1 \leq i \leq k)$,用$f_{i}$表示$fdf$选择的$k$张卡片中字母与第$i$张相同的卡片数。最后会$ctr$给$fdf$的硬币总数为$\sum_{i = 1}^{k} f_{i}$。
告诉你$n$张卡片上的字母,请你帮$fdf$设计一种选择方案使他能获得最多的硬币,并输出能获得的最大硬币数量。

输入格式

输入第一行为一个整数$T(T \leq 25)$,表示一共有$T$组测试数据。
对于每组测试数据:
第一行有两个整数$n$和$k(1 \leq k \leq n \leq 10^{5})$,表示卡片总数与需要选择的卡片数。
第二行有$n$个大写字母(字母之间没有空格),其中第$i$个字母代表了第$i$张卡片上的字母。

输出格式

对于每组测试数据,输出一个整数表示$fdf$能获得的最大硬币数量。

输入样例 复制

2
15 10
DZFDFZDFDDDDDDF
6 4
YJSNPI

输出样例 复制

82
4

数据范围与提示