삼진 문자열 혁명
시간 제한1초메모리 제한256 MB
삼진 문자열에 주어진 재작성 연산을 적용할 수 있을 때, 각 질의 문자열로 변환 가능한 s의 부분 문자열 개수를 구한다.
문제
삼진 문자열은 각 자리가 , , 중 하나인 문자열이다.
삼진 문자열에 대해 Chiaki는 다음 연산을 원하는 만큼 수행할 수 있다.
- 한 곳을 로 바꾸거나, 한 곳을 으로 바꾼다. 예를 들어 은 이나 로 바뀔 수 있다.
- 한 곳을 으로 바꾸거나, 한 곳을 로 바꾼다. 예를 들어 은 이나 로 바뀔 수 있다.
- 한 곳을 지우거나, 문자열의 아무 위치에 를 넣는다. 문자열의 맨 앞이나 맨 뒤에 넣어도 된다. 예를 들어 은 , , , 로 바뀔 수 있다.
- 한 곳을 지우거나, 문자열의 아무 위치에 를 넣는다. 문자열의 맨 앞이나 맨 뒤에 넣어도 된다. 예를 들어 은 , , , , , , 로 바뀔 수 있다.
Chiaki에게 길이 인 삼진 문자열 와 개의 다른 삼진 문자열 이 있다. 각 삼진 문자열 에 대해, 부분 문자열 에 위 연산을 여러 번 수행해 로 만들 수 있는 쌍 ()의 개수를 구하려고 한다.
입력
여러 테스트 케이스가 주어진다. 입력의 첫 줄에는 테스트 케이스의 수 가 주어진다. 각 테스트 케이스는 다음과 같다.
첫 줄에는 두 정수 과 ()이 주어진다. 은 의 길이이고, 은 다른 삼진 문자열의 개수이다.
둘째 줄에는 길이 인 삼진 문자열 가 주어진다.
다음 개 줄에는 각각 삼진 문자열 ()가 주어진다.
모든 테스트 케이스에 걸친 모든 문자열 길이의 합은 을 넘지 않는다.
출력
각 테스트 케이스마다 개 줄을 출력한다. 번째 줄에는 삼진 문자열 에 대한 답을 나타내는 정수를 출력한다.