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(); //计算权值 }
}