import Ġjava . util .* Ċ Ċ fun Ġmain ( args : ĠArray < String >) Ġ{ ĊĠĠĠ Ġrepeat ( readLine () !!. toInt ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġprint (" Case Ġ# ${ it Ġ+ Ġ 1 }: Ġ") ĊĠĠĠĠĠĠĠ Ġsolve () ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġsolve () Ġ{ ĊĠĠĠ Ġval Ġn Ġ= Ġread Line () !!. toInt () ĊĠĠĠ Ġval Ġinput Ġ= ĠArrayList < String >() ĊĠĠĠ Ġrepeat ( n ) Ġ{ Ġinput . add ( readLine () !!. reversed ()) Ġ} ĊĠĠĠ Ġinput . sort () ĊĊĠĠĠ Ġval Ġt Ġ= ĠT rie ('_ ') Ġ// Ġroot ĊĠĠĠ Ġinput . forEach Ġ{ Ġt . put ( it ) Ġ} ĊĠĠĠ Ġprintln ("${ n Ġ- Ġt . unused () }") Ċ } Ċ Ċ data Ġclass ĠT rie ( ĊĠĠĠĠĠĠĠ Ġval Ġc : ĠChar , ĊĠĠĠĠĠĠĠ Ġval Ġroot : ĠBoolean Ġ= Ġ( c Ġ== Ġ'_ '), ĊĠĠĠĠĠĠĠ Ġvar Ġterminal : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġval Ġchild : ĠArrayList < T rie > Ġ= ĠArrayList () Ċ ) Ġ{ ĊĠĠĠ Ġfun Ġput ( str : ĠString , Ġindex : ĠInt Ġ= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġc Ġ= Ġstr [ index ] ĊĠĠĠĠĠĠĠ Ġif Ġ( child . isEmpty () Ġ|| Ġchild . last (). c Ġ!= Ġc ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchild . add ( T rie ( c )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( str . length Ġ== Ġindex Ġ+ Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchild . last (). terminal Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchild . last (). put ( str , Ġindex Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġunused (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( child . isEmpty ()) Ġreturn Ġ 1 ĊĊĠĠĠĠĠĠĠ Ġvar Ġr Ġ= Ġchild . map Ġ{ Ġit . unused () Ġ}. sum () ĊĠĠĠĠĠĠĠ Ġif Ġ( terminal ) Ġr ++ ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! root Ġ&& Ġr Ġ>= Ġ 2 ) Ġr Ġ-= Ġ 2 ĊĠĠĠĠĠĠĠ Ġreturn Ġr ĊĠĠĠ Ġ} Ċ } ĊĊ