3003: 卡片游戏

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

题目描述

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

输入格式

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

输出格式

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

输入样例 复制

2
15 10
DZFDFZDFDDDDDDF
6 4
YJSNPI

输出样例 复制

82
4

数据范围与提示

对于第一组样例,fdffdf的最佳方案是选择99个‘DD’卡片,和任意的一张其他卡片。其中对于每张‘DD’卡片,fdffdf能得到99个硬币,对于唯一一张不是D’D’的任意卡片,fdffdf能得到11个硬币,故总共可以得到8282个硬币。