문제
소문자 10자 이하로 이루어진 문자열이 N개 주어진다.
동일한 문자열이 여러번 주어질 수 있다.
주어진 순서대로 아래 규칙에 맞게 문자열(str)의 별칭을 만든다.
1) str의 접두사여야 한다. ("abcd"의 접두사 : "a", "ab", "abc", "abcd")
2) 이전에 등장한 문자열의 접두사가 아니어야 한다.
3) 위 조건을 만족하는 것 중 가장 짧아야 한다.
4) 만약, 위 조건을 만족하는 별칭이 존재하지 않는다면 현재까지 str과 일치하는 문자열이 등장한 횟수 cnt를 기준으로 별칭을 정한다. (cnt는 str을 포함한 횟수이다.)
a. cnt==1, str
b. cnt > 1, str+cnt
ex)
son -> s
sonny -> sonn // s, so, son 은 son의 접두사이다
song -> song
so -> so // s, so는 이전 문자열들의 접두사이므로 4-a 조건에 의해 str인 so로 설정된다.
su -> su // 1~3번 규칙에 의해 접두사인 su로 설정된다.
son -> son2 // 4-b번 규칙에 의해 cnt=2 이므로 son2로 설정된다
* 위의 규칙을 이용해 별칭을 정하면 두 개의 문자열이 같은 별칭을 가질 수도 있다.
ex) "ab", "a", "a" 가 주어지는 경우, 각각 "a"(1~3번 규칙), "a"(4-a번 규칙), "a2"(4-b번 규칙)
입력
첫째 줄에 문자열 수 N(1 ~ 100,000)이 주어진다.
둘째 줄부터 N개의 줄에 10자 이하의 소문자 문자열이 주어진다.
출력
주어진 순서대로 문자열의 별칭을 한 줄에 한개씩 출력한다.
예제
9
son
sonny
song
so
su
son
s
son
s
s
sonn
song
so
su
son2
s
son3
s2