 (defn ^String center
   "Pad both ends of s with padding, or spaces, until the length of s
   matches width."
-  ([^CharSequence s ^Long width]
+  ([^CharSequence s ^long width]
    (center s width " "))
-  ([^CharSequence s ^Long width ^CharSequence padding]
+  ([^CharSequence s ^long width ^CharSequence padding]
    {:pre [(not-empty padding)
           (not (nil? s))]
     :post [(= (.length %) width)]}


(defn- gen-padding
  "Generate the necessary padding to fill s upto width."
  [^CharSequence s ^CharSequence padding ^Long width]
  (let [missing (- width (.length s))
        full-lengths (Math/floor (/ missing (.length padding)))
        remaining (if (zero? full-lengths) (- width (.length s))

                         1))))))
    (subsolution (.length s1) (.length s2))))

(defn- hamming-distance [s1 s2]
  (+
   (reduce + (map #(if (= %1 %2) 0 1) s1 s2))
   (- (max (.length s1) (.length s2))
