가장 긴 공통 부분 문자열
시간 제한5초메모리 제한2048 MB
길이가 n인 이진 문자열 s와 길이가 m인 이진 문자열 t 중에서 w가 가장 긴 공통 부분 문자열 중 하나인 쌍의 개수를 998244353으로 나눈 나머지로 구합니다.
문제
리사는 가장 긴 공통 부분 문자열(Longest Common Substring) 문제를 풀기 위한 프로그램을 작성했다. 그 뒤 리사는 이 프로그램으로, '0'과 '1'로 이루어진 두 문자열 와 에서 둘 모두의 부분 문자열인 가장 긴 문자열 를 찾았다. 가장 긴 문자열이 여러 개라면, 리사는 그중 임의의 하나를 찾았다.
리사가 찾은 의 길이는 매우 짧았다. 최대 3이다.
리사는 (의 길이), (의 길이), 그리고 를 기억하지만, 문자열 와 자체는 기억하지 못한다. 이제 리사는 길이가 각각 , 이고 '0'과 '1'로만 이루어졌으며, 를 가장 긴 공통 부분 문자열 중 하나로 갖는 문자열 쌍 가 몇 개인지 궁금해한다.
리사를 도와 이런 쌍의 개수를 으로 나눈 나머지로 구하라. 이고 이면 와 는 서로 다른 쌍으로 센다.
입력
첫 번째 줄에 문자열 , , 의 길이를 뜻하는 정수 , , 가 주어진다 (; ).
두 번째 줄에 '0'과 '1'로 이루어진 길이 의 문자열 가 주어진다.
출력
를 가장 긴 공통 부분 문자열 중 하나로 갖는 문자열 쌍 의 개수를 으로 나눈 나머지를 출력한다.
힌트
문자열 가 의 부분 문자열이라는 것은, 의 앞과 뒤에서 0개 이상의 문자를 지워 를 얻을 수 있다는 뜻이다.
첫 번째 테스트에서 조건을 만족하는 쌍은 모두 ("01", "10"), ("01", "11"), ("10", "01"), ("10", "11"), ("11", "01"), ("11", "10")이다.