class ĠDay 0 2 Ġ{ ĊĠĠĠ Ġfun Ġsolve Part 1 ( raw Values Ġ: ĠList < String >): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġ( tw os , Ġth re es ) Ġ= Ġraw Values . fold ( Pair ( 0 , 0 )) Ġ{ Ġsum , Ġelement Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcounts Ġ= Ġelement . as Sequence (). grouping By Ġ{ Ġit Ġ}. each Count () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPair ( sum . first Ġ+ Ġif Ġ( counts . values . contains ( 2 )) Ġ 1 Ġelse Ġ 0 , Ġsum . second Ġ+ Ġif ( counts . values . contains ( 3 )) Ġ 1 Ġelse Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtw os Ġ* Ġth re es ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsolve Part 2 ( raw Values Ġ: ĠList < String >): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġraw Values . map Indexed Ġ{ Ġi , Ġouter Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġraw Values . drop ( i ). map NotNull Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdiff Indexes Ġ= Ġdiff Indexes ( outer , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( diff Indexes . first Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġouter . remove Range ( diff Indexes . second , Ġdiff Indexes . second + 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatten () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. first () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdiff Indexes ( a : ĠString , Ġb : ĠString ): ĠPair < Int , ĠInt > Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġindex Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġdiff Ġ= Ġa . map Indexed Ġ{ Ġi , Ġchar Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( char Ġ!= Ġb [ i ]) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindex Ġ= Ġi ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ 0 ĊĠĠĠĠĠĠĠ Ġ}. sum () ĊĠĠĠĠĠĠĠ Ġreturn ĠPair ( diff , Ġindex ) ĊĠĠĠ Ġ} Ċ }