You are given a String number containing the digits of a phone number. To help you memorize the number, you want to divide it into groups of contiguous digits. Each group must contain exactly 2 or 3 digits. There are three kinds of groups:
- Excellent: A group that contains only the same digits. For example, 000 or 77.
- Good: A group of 3 digits, 2 of which are the same. For example, 030, 229 or 166.
- Usual: A group in which all the digits are distinct. For example, 123 or 90.
The quality of a group assignment is defined as 2 * (number of excellent groups) + (number of good groups). Divide the number into groups such that the quality is maximized, and return the result as a String, where each pair of consecutive groups is separated by a dash ('-'). If there are multiple ways to do this, return the one among them that results in the lexicographically earliest String.