import Ġjava . io . File Ċ import Ġjava . lang . IllegalStateException Ċ Ċ fun Ġmain () Ġ{ ĊĠĠĠ Ġval Ġinput Ġ= Ġread Input File () ĊĊĠĠĠ Ġprintln (" Part ĠI : Ġthe Ġsolution Ġis Ġ${ solve Part I ( input )}. ") ĊĠĠĠ Ġprintln (" Part ĠII : Ġthe Ġsolution Ġis Ġ${ solve Part II ( input )}. ") Ċ } Ċ Ċ fun Ġread Input File (): ĠList < String > Ġ{ ĊĠĠĠ Ġreturn ĠFile ( ClassLoader . getSystem Resource (" input . txt "). file ). read Lines () Ċ } Ċ Ċ fun Ġsolve Part I ( ids : ĠList < String >): ĠInt Ġ{ ĊĠĠĠ Ġval ĠnumberOf Ids By SizeOf Repeat Ġ= Ġids . flatMap Ġ{ Ġid Ġ-> Ġid . grouping By Ġ{ Ġit Ġ}. each Count (). values . toSet () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. grouping By Ġ{ Ġit Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. each Count () ĊĊĠĠĠ Ġreturn ĠnumberOf Ids By SizeOf Repeat [ 2 ] !! Ġ* ĠnumberOf Ids By SizeOf Repeat [ 3 ] !! Ċ } Ċ Ċ fun Ġsolve Part II ( ids : ĠList < String >): ĠString Ġ{ ĊĠĠĠ Ġval Ġid Length Ġ= Ġids [ 0 ]. length ĊĊĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġids . size Ġ- Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġ( i Ġ+ Ġ 1 ) Ġuntil Ġ( ids . size Ġ- Ġ 1 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġshared Letters Ġ= Ġget Shared Letters ( ids [ i ], Ġids [ j ]) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( shared Letters . length Ġ== Ġid Length Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġshared Letters ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġthrow ĠIllegalStateException (" This Ġline Ġshould Ġnot Ġbe Ġreached .") Ċ } Ċ Ċ fun Ġget Shared Letters ( id 1 : ĠString , Ġid 2 : ĠString ): ĠString Ġ{ ĊĠĠĠ Ġvar Ġresult Ġ= Ġ"" ĊĊĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. ( id 1 . length Ġ- Ġ 1 )) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( id 1 [ i ] Ġ== Ġid 2 [ i ]) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ+= Ġid 1 [ i ] ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġresult Ċ } Ċ