Given a list of millions of words, design an algorithm to create the largest possible rectangle of letters such that every row forms a word (reading left to right) and every column forms a word (reading top to bottom). The words need not be chosen consecutively from the list but all rows must be the same length and all columns must be the same height.
If there are more than one answer, return any one of them. A word can be used more than once.
Example 1:
Input: ["this", "real", "hard", "trh", "hea", "iar", "sld"]
Output:
[
"this",
"real",
"hard"
]
Example 2:
Input: ["aa"]
Output: ["aa","aa"]
Notes:
words.length <= 1000
words[i].length <= 100
- It's guaranteed that all the words are randomly generated.