private Set<Set<String>> getSubsetsOfSize(Set<String> prefixSet, Set<String> set, int size){
        if(prefixSet.size()==0){
            if(size<=0){
                return null;
            }
            if(size>set.size()){
                return null;
            }
        }
        Set<Set<String>> subsets = new HashSet<Set<String>>();
        if(prefixSet.size()==size && size!=0){
            subsets.add(prefixSet);
            return subsets;
        }
        for(String o : set){
            Set<String> newPrefix = new HashSet<String>(prefixSet);
            newPrefix.add(o);
            Set<String> newSet = new HashSet<String>(set);
            newSet.remove(o);
            subsets.addAll(getSubsetsOfSize(newPrefix, newSet, size));
        }
        return subsets;
    }