Japt, 22 21 bytes
Work in progress
r`%ß@%b`È3ÇXvÃqXû5}'i Original (w/ -S flag)
¸cÈv ¶`ß@`Å?5ogX¸iXv:X ¸cÈv ¶`ß@`Å?5ogX¸iXv:X :Implicit input of string ¸ :Split on spaces c :Map then flatten È :Passing each X through the following function v : Lowercase ¶ : Test for equality with `ß@` : The compressed string "band" ("and" compressed is also 2 bytes but includes the "d") Å : Slice off the first character ? : If true 5o : Range [0,5) g : Index (0-based) each into X¸ : Split X on spaces, converting it to a single element array i : Prepend Xv : Lowercase X :X : Else return X :Implicit output joined by spaces