(defn maxchars 
        ([string max] (maxchars string max 0 #{}))
        ([string max index prevChars]
                (if (>= index (count string))
                        true
                        (if (contains? prevChars (str (nth string index)))
                                (maxchars string max (inc index) prevChars)
                                (if (>= (count prevChars) max)
                                        false
                                        (maxchars string max (inc index) (conj prevChars (str (nth string index)))))))))
 
(-> (maxchars "aaaaaaaa" 3) println)
(-> (maxchars "aaaaaaaa" 1) println)
(-> (maxchars "abcd" 3) println)
(-> (maxchars "aaaaaaaa" 22) println)