package Ġme . cons ue gra . algorithms Ċ Ċ /** Ċ Ġ* ĠPrint Ġall Ġper mutations Ġof Ġa Ġgiven Ġstring . Ċ Ġ*/ Ċ class ĠK String Per mutations Ġ{ ĊĊĠĠĠ Ġfun Ġper mutations ( input : ĠString ): ĠList < String > Ġ= Ġper mutations ("", Ġinput , Ġmutable ListOf ()) ĊĊĠĠĠ Ġprivate Ġfun Ġper mutations ( prefix : ĠString , Ġinput : ĠString , Ġper mutations : ĠMutable List < String >): ĠList < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput . isEmpty () Ġ-> Ġper mutations . add ( prefix ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġinput . forEach Indexed Ġ{ Ġindex , Ġc Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġper mutations ( prefix Ġ+ Ġc , Ġinput . substring ( 0 , Ġindex ) Ġ+ Ġinput . substring ( index Ġ+ Ġ 1 ), Ġper mutations ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġper mutations ĊĠĠĠ Ġ} Ċ } Ċ