지역 코드 정하기
시간 제한1초메모리 제한1024 MB
여러 지역 코드 문자열 중 일부를 골라 모든 자릿수를 재배열해 가장 짧은 회문을 만들고, 사용한 지역 번호를 출력한다.
문제
때는 2123년, UDPC는 전세계의 많은 지역을 아우르는 거대한 대회로 자라났다. UDPC를 구성하는 개의 지역은 UDPC의 100주년을 맞아 모든 지역을 통일해 연합을 구성하기로 했다. 각 지역은 부터 까지의 지역 번호로 구분된다. 하지만 통일 과정에서 사소한 문제가 발생하는데, 바로 지역마다 지역 코드가 제각각이라는 점이다.
지역 코드는 지역 번호와 다른 것으로, 각 지역에 배정된 부터 까지의 숫자로 이루어진 문자열이다. 긴 회의 끝에, 다음과 같은 규칙을 통해 새 연합의 지역 코드를 결정하기로 하였다.
- 새 지역 코드는 기존 지역의 지역 코드 중 하나 이상을 골라 합친 뒤 문자 단위로 재배열한 것이어야 한다.
- 새 지역 코드는 외우기 쉽도록 회문이어야 한다. 회문이란, 왼쪽에서 오른쪽으로 읽은 것과 오른쪽에서 왼쪽으로 읽은 것이 서로 같은 문자열을 말한다.
- 새 지역 코드는 위의 조건을 만족하는 것 중 가장 짧은 것이다.
UDPC의 평화를 위해, 새 연합의 지역 코드를 구해 보자.
입력
첫째 줄에 지역의 수 이 주어진다.
둘째 줄부터 개의 줄이 주어진다. 그중 번째 줄에 번 지역의 지역 코드를 나타내는 비어 있지 않은 문자열 가 주어진다.
각 문자열은 부터 까지의 숫자로만 이루어져 있으며, 모든 문자열의 길이의 합은 이하임이 보장된다.
출력
첫째 줄에 새 지역 코드의 길이를 출력한다. 만약 새 지역 코드를 만드는 것이 불가능할 경우 -1을 출력한다.
새 지역 코드를 만드는 것이 가능할 경우 아래와 같이 두 줄을 더 출력한다.
둘째 줄에 새 지역 코드를 이루는 지역의 수 을 출력한다.
셋째 줄에 새 지역 코드를 이루는 개 지역의 지역 번호를 공백으로 구분해 오름차순으로 출력한다.
가능한 방법이 여러 가지일 경우 그중 아무 것이나 출력한다.