CF1879C Make it Alternating
Description
You are given a binary string $ s $ . A binary string is a string consisting of characters 0 and/or 1.
You can perform the following operation on $ s $ any number of times (even zero):
- choose an integer $ i $ such that $ 1 \le i \le |s| $ , then erase the character $ s_i $ .
You have to make $ s $ alternating, i. e. after you perform the operations, every two adjacent characters in $ s $ should be different.
Your goal is to calculate two values:
- the minimum number of operations required to make $ s $ alternating;
- the number of different shortest sequences of operations that make $ s $ alternating. Two sequences of operations are different if in at least one operation, the chosen integer $ i $ is different in these two sequences.
Input Format
The first line contains one integer $ t $ ( $ 1 \le t \le 10^4 $ ) — the number of test cases.
Each test case consists of one line containing the string $ s $ ( $ 1 \le |s| \le 2 \cdot 10^5 $ ). The string $ s $ consists of characters 0 and/or 1 only.
Additional constraint on the input:
- the total length of strings $ s $ over all test cases does not exceed $ 2 \cdot 10^5 $ .
Output Format
For each test case, print two integers: the minimum number of operations you have to perform, and the number of different shortest sequences of operations. Since the second number might be large, print its remainder modulo $ 998244353 $ .
Explanation/Hint
In the first test case of the example, the shortest sequences of operations are:
- $ [2] $ (delete the $ 2 $ -nd character);
- $ [3] $ (delete the $ 3 $ -rd character).
In the second test case of the example, the shortest sequences of operations are:
- $ [2, 1] $ (delete the $ 2 $ -nd character, then delete the $ 1 $ -st character);
- $ [2, 2] $ ;
- $ [1, 1] $ ;
- $ [1, 2] $ ;
- $ [3, 1] $ ;
- $ [3, 2] $ .
In the third test case of the example, the only shortest sequence of operations is $ [] $ (empty sequence).