Problem p03392 - Generation 3

Orig Description

Score : 700 points
Problem StatementYou are given a string S consisting of a,b and c. Find the number of strings that can be possibly obtained by repeatedly performing the following operation zero or more times, modulo 998244353:
Choose an integer i such that 1\leq i\leq |S|-1 and the i-th and (i+1)-th characters in S are different. Replace each of the i-th and (i+1)-th characters in S with the character that differs from both of them (among a, b and c).
Constraints
2 \leq |S| \leq 2 × 10^5
S consists of a, b and c.
InputInput is given from Standard Input in the following format:
S
OutputPrint the number of strings that can be possibly obtained by repeatedly performing the operation, modulo 998244353.
Sample Input 1abc
Sample Output 13
abc, aaa and ccc can be obtained.
Sample Input 2abbac
Sample Output 265
Sample Input 3babacabac
Sample Output 36310
Sample Input 4ababacbcacbacacbcbbcbbacbaccacbacbacba
Sample Output 4148010497

Extracted Specification

An integer \(N\) (2 ≤ \(N\) ≤ 2 × 10^5), representing the length of a string.
A string \(S\) of length \(N\) consisting of characters 'a', 'b', and 'c'.

### Example Input:

```
5
abbac
```

### Function Signature:
Write a function f(N, S) that takes in the input.
```python
def f(N: int, S: str):
    '''
    N: an integer
    S: a string
    '''
```

Test Case Generator

Sure, I can help you write a test case generator for the given problem statement. Here is the Python code for the test case generator:

```python
import random

def tcgen():
    # Length of the string |S| is between 2 and 2 * 10^5.
    length = random.randint(2, 2 * 10**5)

    # The string S consists of characters 'a', 'b', and 'c'.
    S = ''.join(random.choice(['a', 'b', 'c']) for _ in range(length))

    return S

# Example usage
if __name__ == "__main__":
    test_case = tcgen()
    print(test_case)
```

This generator function creates a random string \( S \) of length between 2 and 200,000, with each character being randomly chosen from 'a', 'b', and 'c'. You can use this function to generate test cases for the problem statement.

Extract Arguments

def extract_arguments(fh):
    S = fh.readline().strip()
    return S