public static void main(String[] args) {

        palavras = getListOfWords();
        grupos = new ArrayList[30]; // palavras por tamanho
        tries = new Trie[30];

        int tamanhoMaior = 0;
        for (String palavra : palavras) {
            int tamanho = palavra.length();
            ArrayList grupo = grupos[tamanho];
            if (grupo == null) {
                grupo = new ArrayList();
                grupos[tamanho] = grupo;
            }
            grupo.add(palavra.toLowerCase());
            if (tamanho > tamanhoMaior) {
                tamanhoMaior = tamanho;
            }
        }


        ArrayList<String> retangulo = new ArrayList<String>();
        for (int area = tamanhoMaior * tamanhoMaior; area > 0; area--) {
            for (int k = tamanhoMaior; k > 0; k--) {
                int l = area / k;
                if ((l <= tamanhoMaior) && (l * k == area)) {
                    if (encontraRetangulo(k, l, retangulo)) {
                        imprimeRetangulo(retangulo);
                        return;
                    }
                }
            }
        }

        System.out.println("Nao ha retangulos possiveis");
    }