아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

문자열 복원

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

요약
길이 L과 두 문자열이 주어질 때, 하나는 접두사이고 다른 하나는 접미사가 되는 길이 L 문자열의 개수를 m으로 나눈 나머지를 구한다.
난이도

보통10점 중 7점

유형
문자열, 조합론, 수학, 구현
정답자
아직 제출이 없습니다

문제

네트워크 검색이나 게놈 해독 같은 여러 응용 문제에서는 문자열에 대한 여러 작업을 수행해야 한다. 예를 들어, 문자열에 대한 일부 정보를 가지고 문자열 자체를 복원해야 하는 경우가 자주 있다.

두 문자열 S1과 S2가 주어진다. 이 중 하나는 찾고자 하는 문자열 S의 접미사이고, 다른 하나는 접두사라는 사실이 알려져 있다. 또한 찾고자 하는 문자열의 길이 L과 문자열 S가 라틴 알파벳 소문자로만 구성되어 있다는 사실도 알려져 있다.

이러한 조건을 만족하는 문자열의 개수를 구해야 한다. 이 수가 매우 클 수 있으므로 m으로 나눈 나머지를 출력해야 한다.

입력

첫 번째 줄에는 처리해야 할 입력 데이터 집합의 개수를 나타내는 정수 t (1 ≤ t ≤ 100)가 주어진다.

각 입력 데이터 집합은 세 줄로 구성된다. 첫 번째 줄에는 두 정수 L과 m (1 ≤ L ≤ 10^9, 1 ≤ m ≤ 10^4)이 주어진다. 두 번째와 세 번째 줄에는 각각 문자열 S1과 S2가 주어진다. 이들은 비어 있지 않고 라틴 알파벳 소문자로만 구성되며, 길이는 200자를 넘지 않는다.

출력

각 입력 데이터 집합에 대해, 조건을 만족하는 문자열의 개수를 m으로 나눈 나머지를 한 줄에 출력한다.

예제1

  1. 예제 1

    입력
    3
    14 1000
    cup
    russia
    7 123
    russian
    codecup
    7 15
    codec
    decup
    
    예상 출력
    752
    0
    1