# [Retina], 147 bytes .$ $* ¶ ¶ {+s`((?<=N(.{7}|.{11}|.{18}|.{20})):|:(?=(.{7}|.{11}|.{18}|.{20})N))(?=.*1) m +is`N(.{7}|.{11}|.{18}|.{20})N(?=.*1) n$1n Ts`1Nl`_:N`.*¶1 [Try it online!][TIO-j8x3h5om] Takes input as an 8x8 board of `:`s with the knights marked with `N`s, with a digit for the number of turns on the next line (it makes no sense to have more than 9 turns, but if you insist I can support it for an extra byte). Note that the output contains additional white space. Explanation: The first stage converts the number of turns to unary, while the second stage adds some white space to the right of the board to stop the regexes from wrapping across the edge. The third stage then replaces all `:`s that are a knight's move away from an `N` with an `m` while the fourth stage replaces all `N`s that are a knight's move away from an `N` or an `n` with an `n`. The fifth stage then deletes any remaining `N`s, changes the `m`s and `n`s to `N`s, and subtracts 1 from the move count. This repeats until the move count is zero. [Retina]: https://github.com/m-ender/retina [TIO-j8x3h5om]: https://tio.run/##K0otycxL/P9fT4VLRYvr0DYuBSCu1i5O0NCwt7H109CrNq@t0as2NASTFiDSyKBWU9OqxkrD3haXtJ@mJlBWT8tQkyuXSzuzOAGnQX4wdXkqhnlcIcUJhn45CfFWfgl6Woe2Gf7/72cFAVxWhBh@eNUYAQA "Retina – Try It Online"