posso dirti quel che ho fatto io:

- non conosco Scanner, però ho osservato uno strano comportamento dopo la lettura dell'int, per cui l'ho ri-inizializzato per la lettura di String. Mi documenterò.

- mi sono accertato di leggere il numero corretto di entries String. Nel tuo codice c'era un ciclo for con poco significato (pensaci un attimo...) L'operatore ternario per definire maxlung è invece un eccesso di zelo, si poteva lasciare come avevi fatto tu.

- il I ciclo for invece: è giusto, puoi avere array multi-dimensionali con buchi, ma poi bisogna anche stare attenti a come si interagisce con loro. Quello è l'unico vero barbatrucco che ho adottato.

- il II ciclo for invece è sostanzialmente invariato (tranne che ho portato fuori il System.out.println() dell'acapo dal ciclo annidato, altrimenti ad ogni carattere andava acapo e non si otteneva l'effetto cosmetico voluto - ma questa è sicuramente una svista di cui ti saresti accorto/a se l'esecuzione fosse andata oltre l'eccezione che ricevevi)