# 2268 Minimum Number of Keypresses

You have a keypad with 9 buttons, numbered from `1` to `9`, each mapped to lowercase English letters. You can choose which characters each button is matched to as long as:

• All 26 lowercase English letters are mapped to.
• Each character is mapped to by exactly 1 button.
• Each button maps to at most 3 characters.

To type the first character matched to a button, you press the button once. To type the second character, you press the button twice, and so on.

Given a string `s`, return the minimum number of keypresses needed to type `s` using your keypad.

Note that the characters mapped to by each button, and the order they are mapped in cannot be changed.

Example 1:

``````  1     2     3
abc   df    eij
4     5     6
gqs   lkx   ptu
7     8     9
mnr   hyz   ovw

Input: s = "apple"
Output: 5
Type 'a' by pressing button 1 once.
Type 'p' by pressing button 6 once.
Type 'p' by pressing button 6 once.
Type 'l' by pressing button 5 once.
Type 'e' by pressing button 3 once.
A total of 5 button presses are needed, so return 5.
``````

Example 2:

``````  1     2     3
ajs   bkt   clu
4     5     6
dmv   enw   fox
7     8     9
gpy   hqz   ir

Input: s = "abcdefghijkl"
Output: 15
• `1 <= s.length <= 105`
• `s` consists of lowercase English letters.
 ``````1 2 3 4 5 6 7 8 9 `````` ``````class Solution: def minimumKeypresses(self, s: str) -> int: c = collections.Counter(s) sorted_c = sorted(c.values(), reverse=True) res = 0 res += sum([v for v in sorted_c[:9]]) res += sum([v * 2 for v in sorted_c[9:18]]) res += sum([v * 3 for v in sorted_c[18:]]) return res``````