시간 제한
메모리 제한
시간 제한
2초
메모리 제한
128 MB
각 알파벳에는 0과 1로 이루어진 코드가 하나씩 대응된다. 코드의 길이는 0일 수도 있다. 어떤 문자열을 인코딩할 때는 앞에서부터 각 문자를 해당 코드로 바꾼 뒤 모두 이어 붙인다.
예를 들어 알파벳 집합이 {a, b, c, d}이고 코드가 f(a)=1, f(b)=1010, f(c)=01, f(d)=10101이라고 하자. 그러면 문자열 cac는 01, 1, 01을 이어 붙인 01101로 인코딩된다.
하나의 이진 코드가 두 가지 문자열로 해석될 수 있으면 그 코드는 애매하다. 세 가지 이상의 문자열로 해석될 수 있으면 정말 애매하다고 한다. 위 대응에서는 10101을 ba, acc, d 세 가지 문자열로 해석할 수 있으므로 정말 애매하다.
코드 목록이 주어졌을 때, 세 가지 이상의 문자열로 해석될 수 있는 이진 코드 중 가장 짧은 길이를 구하시오.
첫째 줄에 코드의 개수 N이 주어진다. N은 2 이상 26 이하이다.
둘째 줄부터 N개의 줄에 각 알파벳에 대응되는 코드가 하나씩 주어진다. 각 코드는 0과 1로만 이루어져 있으며 길이는 50 이하이다. 길이가 0인 코드는 -1로 주어진다. 서로 다른 알파벳이 같은 코드를 가질 수 있다.
세 가지 이상의 문자열로 해석될 수 있는 이진 코드의 최소 길이를 출력한다. 그런 코드가 없으면 -1을 출력한다.