만드는 중입니다

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

나모모 부분 수열

시간 제한3초메모리 제한1024 MB

요약
x
난이도

보통10점 중 5점

유형
문자열, 동적 계획법, 해시맵
정답자
아직 제출이 없습니다

문제

Pang 교수는 "gshfd1jkhaRaadfglkjerVcvuy0gf"라고 말했다.

Pang 교수의 말을 이해하려고, 그 말의 namomo 부분 수열의 개수를 구하려 한다. Pang 교수의 말은 길이가 nn인 문자열 ss이며, 각 문자는 영문자(대문자 또는 소문자) 또는 숫자이다. ss의 ii번째 문자는 s[i]s[i]로 나타낸다 (1≤i≤n1 \le i \le n). ss의 부분 수열 tt는 인덱스 목록 t1,…,t6t_1, \ldots, t_6으로 정의되며, 1≤t1<t2<…<t6≤n1 \le t_1 < t_2 < \ldots < t_6 \le n을 만족한다. 두 문자 c1c_1, c2c_2에 대해 compare(c1,c2)compare(c_1, c_2)를 다음과 같이 정의한다. c1=c2c_1 = c_2이면 compare(c1,c2)=1compare(c_1, c_2) = 1이고, 그렇지 않으면 compare(c1,c2)=0compare(c_1, c_2) = 0이다. tt는 모든 1≤i<j≤61 \le i < j \le 6에 대해 compare(s[ti],s[tj])=compare(namomo[i],namomo[j])compare(s[t_i], s[t_j]) = compare(namomo[i], namomo[j])를 만족할 때 ss의 namomo 부분 수열이다. 여기서 namomo[x]namomo[x]는 문자열 "namomo"의 xx번째 문자이다 (1≤x≤61 \le x \le 6).

주어진 문자열 ss의 namomo 부분 수열의 개수를 998244353998244353으로 나눈 나머지를 출력한다.

입력

첫 줄에 길이 nn의 문자열 ss가 주어진다 (6≤n≤10000006 \le n \le 1000000). ss는 영소문자('a'부터 'z'), 영대문자('A'부터 'Z'), 숫자('0'부터 '9')로만 이루어진다.

출력

답을 998244353998244353으로 나눈 나머지를 정수 하나로 출력한다.

예제4

  1. 예제 1

    입력
    wohaha
    
    예상 출력
    1
    
  2. 예제 2

    입력
    momomo
    
    예상 출력
    0
    
  3. 예제 3

    입력
    gshfd1jkhaRaadfglkjerVcvuy0gf
    
    예상 출력
    73
    
  4. 예제 4

    입력
    retiredMiFaFa0v0
    
    예상 출력
    33