Извините, но в моей предложеной реализации баг. В при вызове map сохранятся лишь уникальные значения ключа, а так как значение ключа у нас - количество символов, то затрутся кортежи с дублированным количеством символов.
так, что надо вызывать .toList а потом .map