N개의 단어가 들어오면 1. 길이가 짧은 것부터 2. 길이가 같다면 사전 순으로 3. 중복 단어는 하나만 살리고 제거 하여 출력하는 문제이다.
import sys
words = [sys.stdin.readline().rstrip() for _ in range(int(input()))]
words = list(set(words))
for i in range(len(words) - 1):
least = i
for j in range(i, len(words)):
if len(words[least]) > len(words[j]):
words[least], words[j] = words[j], words[least]
elif len(words[least]) == len(words[j]):
if words[least] > words[j]:
words[least], words[j] = words[j], words[least]
아뿔사 시간을 생각하지 못했다. 
파이썬의 sort는 특정 키를 기준으로 정렬할 수 있다.
key = len sort의 옵션으로 쓰게 되면 길이를 기준으로 정렬한다.
길이 순 정렬 -> 사전 순 정렬을 하게되면 길이 순 정렬이 적용되지 않으므로
사전 순 정렬 후 길이 순으로 정렬해준다.
import sys
words = [sys.stdin.readline().rstrip() for _ in range(int(input()))]
words = list(set(words))
words.sort() #길이순으로 정렬하고 사전순 정렬하면 길이순이 적용되지 않음 -> 따라서 사전순으로 정렬하고 길이순으로 정렬
words.sort(key = len)
for w in words:
print(w)