지역 코드 정하기

시간 제한1초메모리 제한1024 MB

문제

때는 2123년, UDPC는 전세계의 많은 지역을 아우르는 거대한 대회로 자라났다. UDPC를 구성하는 $N$개의 지역은 UDPC의 100주년을 맞아 모든 지역을 통일해 연합을 구성하기로 했다. 각 지역은 $1$부터 $N$까지의 지역 번호로 구분된다. 하지만 통일 과정에서 사소한 문제가 발생하는데, 바로 지역마다 지역 코드가 제각각이라는 점이다.

지역 코드지역 번호와 다른 것으로, 각 지역에 배정된 $0$부터 $9$까지의 숫자로 이루어진 문자열이다. 긴 회의 끝에, 다음과 같은 규칙을 통해 새 연합의 지역 코드를 결정하기로 하였다.

  • 새 지역 코드는 기존 지역의 지역 코드 중 하나 이상을 골라 합친 뒤 문자 단위로 재배열한 것이어야 한다.
  • 새 지역 코드는 외우기 쉽도록 회문이어야 한다. 회문이란, 왼쪽에서 오른쪽으로 읽은 것과 오른쪽에서 왼쪽으로 읽은 것이 서로 같은 문자열을 말한다.
  • 새 지역 코드는 위의 조건을 만족하는 것 중 가장 짧은 것이다.

UDPC의 평화를 위해, 새 연합의 지역 코드를 구해 보자.

입력

첫째 줄에 지역의 수 $N$이 주어진다. $(1\le N\le 10^6)$

둘째 줄부터 $N$개의 줄이 주어진다. 그중 $i$번째 줄에 $i$번 지역의 지역 코드를 나타내는 비어 있지 않은 문자열 $S_i$가 주어진다.

각 문자열은 $0$부터 $9$까지의 숫자로만 이루어져 있으며, 모든 문자열의 길이의 합은 $2\times 10^6$ 이하임이 보장된다.

출력

첫째 줄에 새 지역 코드의 길이를 출력한다. 만약 새 지역 코드를 만드는 것이 불가능할 경우 -1을 출력한다.

새 지역 코드를 만드는 것이 가능할 경우 아래와 같이 두 줄을 더 출력한다.

둘째 줄에 새 지역 코드를 이루는 지역의 수 $M$을 출력한다.

셋째 줄에 새 지역 코드를 이루는 $M$개 지역의 지역 번호를 공백으로 구분해 오름차순으로 출력한다.

가능한 방법이 여러 가지일 경우 그중 아무 것이나 출력한다.