(define (ortdist-missing n1 n2) (let ((nl1 (string->list n1)) (nl2 (string->list n2))) (if (! (eq? (abs (- (length nl1) (length nl2))) 1)) 1 ;; not a one-char difference (let ((nl1 (if (> (length nl1) (length nl2)) nl1 nl2)) (nl2 (if (> (length nl1) (length nl2)) nl2 nl1)) (allonedrops (lambda (ls) (let ((ret '())) (for-each (lambda (i) (append! ret (list (append (take ls i) (drop (drop ls i) 1))))) (iota (length ls))) ret)))) (any (lambda (l) (equal? l nl2)) (allonedrops nl1))))))