통신을 하려면 서로 약속된 부호(code) 가 필요하다. 형식적으로, 알파벳(기호들의 유한 집합)이 주어졌을 때 부호란 그 알파벳 위의 공집합이 아닌 문자열들의 집합이며, 각 문자열을 부호어(code word) 라고 한다. 메시지는 부호어들을 차례로 이어 붙여 만든 문자열이다. 예를 들어 모스 부호에서 글자 "S"는 ..., "O"는 ---이므로 "SOS"는 ...---...가 된다.
어떤 메시지를 부호어들로 나누는 방법이 두 가지 이상 존재하면, 즉 서로 다른 해석(디코딩)이 둘 이상 있으면 그 부호를 모호하다(ambiguous) 고 한다. 그렇지 않으면 모호하지 않다고 한다.
예를 들어 이진 알파벳 ${0, 1}$ 위의 부호 ${10, 01, 101}$은 모호하다. 메시지 10101을 10 101로도, 101 01로도 읽을 수 있기 때문이다. 반면에 부호 ${01, 10, 011}$은 모호하지 않다. 이 부호로 만든 어떤 메시지도 서로 다른 두 가지 해석을 가지지 않는다.
주어진 부호가 모호한지 판정하는 프로그램을 작성하여라. 모호한 경우에는 그 부호로 만들 수 있는 가장 짧은 모호한 메시지의 길이(기호의 개수)도 함께 구하여라.
입력은 여러 개의 테스트 케이스로 이루어진다. 모든 테스트 케이스에서 알파벳은 16진 숫자, 즉 십진 숫자 0부터 9까지와 대문자 A부터 F까지의 집합이다.
각 테스트 케이스의 첫 줄에는 부호어의 개수를 나타내는 정수 $N$ ($1 \le N \le 100$)이 주어진다. 이어지는 $N$개의 줄에는 각각 하나의 부호어가 주어지며, 길이가 최대 $50$인 공백 없는 16진 숫자 문자열이다. 한 테스트 케이스 안의 부호어들은 모두 서로 다르다.
입력의 끝은 $N = 0$인 줄로 표시되며, 이 줄은 어떤 테스트 케이스에도 속하지 않으므로 처리하지 않는다.
각 테스트 케이스마다 한 줄에 그 부호로 만들 수 있는 가장 짧은 모호한 메시지의 길이를 출력한다. 부호가 모호하지 않으면 -1을 출력한다.