         (recur res (rest l))))
     text-after))
 
+;; (mw.utils/timed "foo" (process-b "fbgdceah")) => "gcehdbfa"
+;; (mw.utils/timed "foo" (process "gcehdbfa")) => "fbgdceah"
 (defn process-b
   ([text-after](process-b text-after (reverse (str/split-lines mydata))))
   ([text-after l](process-b-2 text-after l)))

     (mycall (cons (first cmd) (cons text (rest (rest cmd)))))))

(defn try-call-cmd-backwards
  ([cmd text-after](try-call-cmd-backwards (combo/permutations (seq text-after)) (call-cmd cmd "dummy") text-after))
  ([perm parsed-cmd text-after]
   (if-not (seq? perm) nil
           (let [text (str/join (first perm))

  (if (seq l)
    (do
      (assert (first l))
      (let [res (mycall (parse-cmd (first l) text))]
        (println (str (first l) " => " res))
        (recur res (rest l))))
    text))
