public void wordMakeSets(){
        System.out.println(">> AGRUPANDO PALAVRAS POR SEMELHANCA... AGUARDE.");
        TreeMap<Integer, ArrayList<String>> tree = new TreeMap<Integer, ArrayList<String>>();
        for (Map.Entry<String, DisjointSet> entry : this.entrySet()) {
            if (tree.get(entry.getKey().length()) == null) {
                tree.put(entry.getKey().length(), new ArrayList<String>());
            }
            tree.get(entry.getKey().length()).add(entry.getKey());
        }
        for (Map.Entry<Integer, ArrayList<String>> entry : tree.entrySet()) {
            ArrayList<String> possibleSimilarities= new ArrayList<String>();
            if (tree.get(entry.getKey() -1) != null) {
                possibleSimilarities.addAll(tree.get(entry.getKey() - 1));
            }
            if (tree.get(entry.getKey() + 1 ) != null) {
                possibleSimilarities.addAll(tree.get(entry.getKey() + 1));
            }
            for (String s : entry.getValue()) {
                for (String possible : possibleSimilarities) {

                    if (WordSimilarity.isSimilar(s, possible)) {
                        if (!(this.get(possible).getReference() == this.get(s).getReference())) {
//                            this.get(possible).setReference(this.get(s));
                            this.get(possible).union(this.get(s));
//                            System.out.println(s + " " + possible);
                        }
                    }
                }
            }
        }
    }