해변에서 좋은 하루를 보내다 보면 앞으로 친구가 될 만한 새로운 사람들을 만나기도 합니다. 계속 연락하며 지내려고 당신은 각 사람의 이름과 함께 그 사람이 어느 마을에서 왔는지를 적어 둡니다. 나중에 당신은 이 사람들이 실제로 몇 개의 서로 다른 마을에서 왔는지 궁금해집니다.
문제는 마을 이름을 적는 과정에서 생기는 오타입니다. 어떤 사람을 "Pasadena"에서 왔다고 적고 다른 사람을 "Passadena"에서 왔다고 적으면, 실제로는 같은 마을일 수도 있는데 서로 다른 두 마을처럼 보이게 됩니다. 그래서 이런 실수를 보정해 주는 프로그램이 필요합니다.
각 마을 이름은 대문자와 소문자, 그리고 문자 -로 이루어진 문자열입니다. 대소문자는 구분하지 않으므로 "SAN-DIEGO"와 "san-diEgo"는 같은 마을을 뜻합니다. 대소문자를 무시했을 때 두 이름이 서로 같거나 정확히 한 글자만 다르면(한 번의 삽입, 삭제, 또는 교체, 즉 편집 거리가 $1$ 이하이면) 두 이름은 같은 마을을 가리킬 수 있습니다. 예를 들어 "SanDIego"와 "san-diego"는 같은 마을일 수 있지만, "san-diego"와 "san-deigo"는 그럴 수 없습니다.
여러 사람이 모두 한 마을 출신일 수 있으려면, 그들의 이름이 모든 쌍에 대해 서로 한 글자 이하로만 달라야 합니다. 모두로부터 한 글자 이내인 어떤 하나의 이름이 존재하는 것만으로는 충분하지 않습니다. 예를 들어 "Tijuana", "tejuana", "TI-Juana" 세 이름이 있을 때, 세 이름 모두 "Tijuana"와 한 글자 이내로 다르지만 "tejuana"와 "TI-Juana"는 서로 두 글자가 다르므로 이 두 사람은 같은 마을을 공유할 수 없습니다. 따라서 최소 두 개의 마을이 필요합니다.
이 사람들이 왔을 수 있는 마을의 최소 개수를 구하세요.
물론, 절대로 친구가 되고 싶지 않은 사람들도 많이 만나게 됩니다.
첫 번째 줄에는 데이터 세트의 개수를 나타내는 정수 $K \ge 1$이 주어집니다. 이어서 다음 형식의 데이터 세트가 $K$개 주어집니다.
각 데이터 세트마다 먼저 Data Set x:를 한 줄에 출력합니다. 여기서 x는 해당 데이터 세트의 번호이며 $1$부터 시작합니다. 그다음 줄에 이 사람들이 왔을 수 있는 마을의 최소 개수를 출력합니다.