Innanzitutto ti consiglio di capire perché va piano. Cosa fai? Dividi in sotto parole lunghe M (lunghezza della parola magica) e poi conti quante di queste sono tante quanto le parole? Pensa, se fai questo o qualcosa di simile, quando fermeresti questa conta? Abbiamo degli indizi importanti, ovvero che la parola magica c'è esattamente una volta in ogni parola. Se non sfrutti questo sarà difficile avere un programma ottimizzato, devi pensare 1) dov'è che il tuo programma fa cose superflue 2) dov'è che impiega troppo tempo per un'operazione che potresti fare in meno. Ad esempio, se conti quante sottostringhe ci sono e mentre lo fai hanno già superato il numero di parole, dovresti fermarti; detto questo, ti consiglio un approccio più basato sugli indizi che abbiamo che una cosa super generica