Ciao,ti propongo un approccio + a oggetti.
Ti scrivi una classe MSC che accetta come parametri due stringhe, nel costruttore memorizza le stringhe in variabili d'istanza, calcola la lunghezza della sottostringa comune alle due stringhe e memorizza anch'essa. L'interfaccia estendera' Comparable, sovrascrivi il metodo compareTo e fai in modo che l'ordinamento avvenga in base al valore della lunghezza, ma in ordine decrescente(se cerchi in post precedenti trovi un po' di esempi su come rendere oggetti comparabili). Metti tutti gli elementi in un array e riordini con Arrays.sort(tuoArray);
Ora hai un array ordinato, prendi il primo elemento e metti le due stringhe nei due array finali, prendi il secondo e, se le stringhe non sono ancora state inserite, inserisci anche queste. Cosi via fino a fine algoritmo.