해결한 사람
0
명
정답률
0.00
%
시간 제한
3000
ms
메모리 제한
245
MB
Berland 이름을 라틴 알파벳 문자로 표기할 때 몇 가지 모호성이 있다.
예를 들어, Berland의 소리 u는 라틴 알파벳으로 "u"라고 쓸 수도 있고, "oo"라고 쓸 수도 있다. 따라서 두 단어 "ulyana"와 "oolyana"는 같은 이름을 나타낸다.
두 번째 모호성은 Berland의 소리 h에 관한 것으로, 이를 표기할 때 "h"와 "kh"를 모두 사용할 수 있다. 예를 들어, 단어 "mihail"와 "mikhail"는 같은 이름을 나타낸다.
Polycarp의 웹사이트에는 n명의 사용자가 등록되어 있다. 각 사용자는 라틴 문자로 표기한 이름을 입력했다. 위에서 설명한 두 가지 모호성을 고려할 때, 이들 중 서로 다른 이름은 몇 개인가?
엄밀히 말해, 치환 "u"
"oo" 및 "h"
"kh"을 사용하여 두 단어를 같게 만들 수 있으면 두 단어가 같은 이름을 나타낸다고 간주한다. 두 단어 중 어느 쪽에서도 양방향으로 임의의 횟수만큼 치환할 수 있다. 이전 치환으로 생긴 문자도 다음 치환에 사용될 수 있다.
예를 들어, 다음 단어 쌍들은 같은 이름을 나타낸다:
"kuuper" 및 "kuooper"
"kuuper".
"khoon" 및 "kkkhoon"
"kkhoon"
"khoon".주어진 단어 목록을 각 그룹의 단어들이 같은 이름을 나타내도록 나눌 때 필요한 그룹 수의 최솟값을 구한다.
첫 번째 줄에는 목록에 있는 단어의 수를 나타내는 정수 n (2 ≤ n ≤ 400)가 주어진다.
이어지는 n개의 줄에는 각 줄마다 단어 하나가 주어진다. 각 단어는 소문자 라틴 문자로만 이루어진다. 각 단어의 길이는 1자 이상 20자 이하이다.
각 그룹의 단어들이 같은 이름을 나타내도록 나눌 때 필요한 그룹 수의 최솟값을 출력한다.
10
mihail
oolyana
kooooper
hoon
ulyana
koouper
mikhail
khun
kuooper
kkkhoon
49
hariton
hkariton
buoi
kkkhariton
boooi
bui
khariton
boui
boi
52
alex
alex
1첫 번째 예제에는 네 개의 단어 그룹이 있다. 각 그룹의 단어들은 같은 이름을 나타낸다:
두 번째 예제에는 다섯 개의 단어 그룹이 있다. 각 그룹의 단어들은 같은 이름을 나타낸다:
세 번째 예제에서는 단어들이 서로 같으므로 같은 이름을 나타낸다.