Alien Dictionary

Prereq: Topological Sort, Heap

Note that this problem requires knowing heap, which is covered in the Priority Queue/Heap section. If you are working through the content in order, feel free to skip this problem and come back after you have completed the heap section.

There is a new alien language which uses the latin alphabet. However, the order among letters are unknown to you.

You receive a list of non-empty words from the dictionary, where words are sorted lexicographically by the rules of this new language.

Derive the order of letters in this language.


  1. You may assume all letters are in lowercase.
  2. Every letter that appears in the input must also appear in the output, and your output cannot have characters not in the input.
  3. If no ordering of letters makes the dictionary sorted lexicographically, return an empty string.
  4. There may be multiple valid orders. If that's the case, return the smallest in normal lexicographical order.


  • words: A list of strings of size n, representing the dictionary words sorted lexicographically in the alien language.


A string representing the smallest possible lexicographical order, or an empty string if no valid order exists.


Example 1:


1words = ["wrt","wrf","er","ett","rftt"]

Output: wertf


Example 2:


1words = ["z","x"]

Output: zx


From z and x,we can get z < x. So return zx.


  • 2 <= n <= 10000
  • 1 <= words[i] <= 30

Try it yourself