CF BUDDY
← Problems·

1730C · Minimum Notation

1200 · data structures, greedy, math

Problem: You have a string ss consisting of digits from 00 to 99 inclusive. You can perform the following operation any (possibly zero) number of times:

  • You can choose a position ii and delete a digit dd on the ii-th position. Then insert the digit min(d+1,9)\min{(d + 1, 9)} on any position (at the beginning, at the end or in between any two adjacent digits).

What is the lexicographically smallest string you can get by performing these operations?

A string aa is lexicographically smaller than a string bb of the same length if and only if the following holds:

  • in the first position where aa and bb differ, the string aa has a smaller digit than the corresponding digit in bb.

Input Format: The first line contains a single integer tt (1t1041 \le t \le 10^4) — the number of test cases. Then the test cases follow.

Each test case consists of a single line that contains one string ss (1s21051 \le |s| \le 2 \cdot 10^5) — the string consisting of digits. Please note that ss is just a string consisting of digits, so leading zeros are allowed.

It is guaranteed that the sum of lengths of ss over all test cases does not exceed 21052 \cdot 10^5.

Output Format: Print a single string — the minimum string that is possible to obtain.

Note: In the first test case:

  • Delete 88 and insert 99 at the end of the notation. The resulting notation is 0429904299.
  • Delete 44 and insert 55 in the 33-rd position of the notation. The resulting notation is 0259902599.

Nothing needs to be done in the second and third test cases.

Sample Cases

Case 1

Input

4
04829
9
01
314752277691991

Output

02599
9
01
111334567888999

Similar problems

00:00:00
Loading editor…
Welcome! I'm your coding tutor for this problem. Use the chips below to reveal stored hints or get AI feedback on your code. I'll guide you step by step — never giving away the solution.

Sign in to unlock AI tutor feedback