마음의 오른쪽 확장
시간 제한2초메모리 제한512 MB
유한 문자열 s 뒤에 t를 무한히 반복한 무한 문자열 n개가 주어질 때, 같은 묶음의 두 문자열이 서로의 부분수열이 되도록 묶음을 나누고 그 수를 최소로 한다.
문제
어느 날 명의 사람들이 마음을 확장하기로 했다.
처음에 번째 사람의 마음은 소문자 영어 알파벳으로 이루어진 두 문자열 와 이다. 확장 후에는 번째 사람의 마음이 오른쪽으로 무한히 이어지는 문자열 가 된다. 즉 는 뒤에 가 무한히 이어붙은 문자열이다. 예를 들어 , 이면 이다.
확장된 마음을 가진 두 사람이 서로 관심을 가진다는 것은 첫 번째 사람의 마음이 두 번째 사람의 마음의 부분 수열이고, 두 번째 사람의 마음도 첫 번째 사람의 마음의 부분 수열이라는 뜻이다. 무한 문자열 가 무한 문자열 의 부분 수열이라는 것은 인 무한 수열이 존재하여 각 에 대해 인 것이다. 예를 들어 무한 문자열 "baaa"는 무한 문자열 "cabababab"의 부분 수열이다.
마음을 확장한 사람들은 한 그룹에 속한 임의의 두 사람이 서로 관심을 가지도록 그룹을 나누기로 했다. 그룹의 수가 최소가 되도록 사람들을 나누어야 한다.
입력
첫째 줄에는 마음을 확장하기로 한 사람의 수 이 주어진다().
다음 개 줄에는 각각 소문자 영어 알파벳으로 이루어진 비어 있지 않은 두 문자열 와 가 주어진다. 이는 마음 확장 전 각 사람의 마음을 나타낸다.
모든 문자열의 길이의 합은 을 넘지 않는다.
출력
첫째 줄에는 최소 그룹 수를 출력한다.
그다음 각 그룹을 다음과 같이 출력한다. 먼저 이 그룹에 속한 사람 수를 출력하고, 그다음 그 사람들의 번호를 출력한다.
각 번호는 정확히 한 번씩 출력되어야 한다. 그룹의 순서와 그룹 내 사람들의 번호 순서는 아무래도 좋다. 가능한 방법이 여러 가지라면 그중 아무거나 출력해도 된다.
힌트
첫 번째 예제에서 각 사람의 확장된 마음은 다음과 같다.
- "
abababab" - "
abababab" - "
aabbabbabb" - "
xyyyyyy" - "
zwwwwww"
4번과 5번 사람은 다른 누구와도 관심을 가지지 않는다. 그러나 처음 세 사람은 서로 관심을 가진다. 따라서 , , 와 같이 그룹을 나눌 수 있다.