Problem C

Statement
Copy Copied
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$$$.

Note:
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).