만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

작은 LCS

시간 제한2초메모리 제한512 MB

요약
인접한 문자가 서로 다른 길이 2n+1의 두 문자열에서 물음표(?)를 A, B, C 중 하나로 채워 LCS 길이가 정확히 n이 되는 경우의 수를 셉니다.
난이도

어려움10점 중 8점

유형
조합론, 문자열, 동적 계획법
정답자
아직 제출이 없습니다

문제

알파벳 A, B, C로만 이루어진 문자열에서 인접한 두 글자가 모두 다르면 이 문자열을 좋은 문자열이라고 한다.

길이가 2n+12n + 1인 좋은 문자열 두 개 (s,t)(s, t)의 쌍은, 두 문자열의 최장 공통 부분 수열(LCS) 길이가 정확히 nn일 때 멋진 쌍이다.

A, B, C와 물음표(?)로 이루어진 문자열 ss와 tt가 주어진다. 각 ?를 A, B, C 중 하나로 바꾸어 (s,t)(s, t)가 멋진 쌍이 되는 방법의 수를 구하라. 답은 998 244 353998\,244\,353으로 나눈 나머지로 출력한다.

입력

첫 줄에 테스트 케이스의 개수 tt (1≤t≤1051 \le t \le 10^5)가 주어진다.

각 테스트 케이스의 첫 줄에는 정수 nn (1≤n≤1061 \le n \le 10^6)이 주어진다. 둘째 줄에는 길이가 2n+12n+1인 문자열 ss가, 셋째 줄에는 길이가 2n+12n+1인 문자열 tt가 주어진다. 두 문자열은 A, B, C, ?로만 이루어진다.

모든 테스트 케이스의 nn 합은 10610^6을 넘지 않는다.

출력

각 테스트 케이스마다 ?를 채워 (s,t)(s, t)가 멋진 쌍이 되는 방법의 수를 998 244 353998\,244\,353으로 나눈 나머지를 한 줄에 출력한다.

힌트

첫 번째 테스트 케이스에서 쌍 (ABA, CBC)는 멋진 쌍이다.

두 번째 테스트 케이스에서 ?를 채워 멋진 쌍을 만드는 방법은 3가지이다. (ABA, CBC), (ACA, CBC), (ABA, CAC)가 그것이다.

예제1

  1. 예제 1

    입력
    5
    1
    ABA
    CBC
    1
    A?A
    C?C
    1
    ???
    ???
    2
    AA???
    ????B
    3
    ?A?B?A?
    ???????
    
    예상 출력
    1
    3
    24
    0
    2