import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNextInt()) {
int count = scanner.nextInt();
List<String> allNames = new ArrayList<>();
while (count-- > 0) {
allNames.add(scanner.next());
}
for (String name : allNames) {
System.out.println(getNameValue(name));
}
}
}
private static int getNameValue(String name) {
Map<String, List<String>> results = Arrays.stream(name.split("")).collect(Collectors.groupingBy(String::new));
List<Integer> counts = new ArrayList<>();
for (Map.Entry<String, List<String>> item : results.entrySet()) {
counts.add(item.getValue().size());
} //统计每个字母出现的次数
final List<Integer> finalCounts = counts.stream().sorted(Comparator.comparing(Integer::intValue).reversed()).collect(Collectors.toList()); //根据出现的次数倒序排序
return IntStream.range(0, counts.size()).mapToObj(index -> (26 - index) * finalCounts.get(index)).reduce((a, b) -> a + b).get(); //计算权值
}}

京公网安备 11010502036488号