I have came across a coding problem. I am unable to understand the problem. Can anyone help me out:

**PROBLEM STATEMENT**

Consider a new order of english alphabets ( *a* to *z* ), that we are not aware of. What we have though, dictionary of words, ordered according to the new order.

Our task is to give each alphabet a rank, ordered list of words. The rank of an alphabet is the minimum integer R that can be given to it, such that:

if alphabet Ai has rank Ri and alphabet Aj has Rj, then

- Rj > Ri if and only if Aj > Ai
- Rj < Ri if and only if Aj < Ai

**Points to note:**

- We only need to find the order of alphabets that are present in the words
- There might be some cases where a strict ordering of words cannot be inferred completely, given the limited information. In that case, give the least possible Rank to every alphabet
- It can be assumed that there will be no direct or indirect conflict in different inferences got from the input

**Input:**

- First line consists of integer ‘W’, the number of words. 1 <= W <= 100
- Second line onwards, there are ‘W’ lines, given ordered list of words. The words will be non-empty, and will be of length <= 20 characters. Also all the characters will be lowercase alphabets,
**a**to**z**

**Output:**

The alphabets, in order of their Rank, for alphabets with the same rank, print them in the order as we know it today

**Examples**

**Input:** 2 ba ab

**Output:** b a

*Explanation:* ab comes after ba implies that b < a

**Input:** 3 abc aca ca

**Ouput:** ab c

*Explanation:* from the first 2 words, we know b < c, and from the last 2 words, we know a < c. We don’t have an ordering between a and b, so we give both of them the same rank, and print them in the order as we know today: ab

SAMPLE INPUT

6 aaabc aaade bacd cde cda cca

SAMPLE OUTPUT

e a b d c

Time Limit: 5.0 sec(s) for each input file.

Memory Limit: 256 MB

Source Limit: 1024 KB