Creo que lo que puedes hacer es ir metiendo todas las lineas en un array, y luego comparar caracter a caracter dentro del array, moviendote con dos bucles, cuando coincidan los caracteres mover ambos una posicion asi sucesivamente, en el momento en que no coincidan mueves el segundo bucle de la comparacion hasta que sea '\0', o hasta un determinado simbolo que pongas en el array, como un asterisco por ejemplo.
Código:
A B //B empieza en A+1
| |
M I C A S A E S M A S G R A N D E Q U E T U C A S A*
--------------------------
A B
| |
M I C A S A E S M A S G R A N D E Q U E T U C A S A*
---------------------------
A B //A==B
| |
M I C A S A E S M A S G R A N D E Q U E T U C A S A*
----------------------------
A A2 B
| | |
M I C A S A E S M A S G R A N D E Q U E T U C A S A*
--------------------------
Tendrias que usar un auxiliar para poder volver a contar si hay alguna otra palabra igual, en este caso CASA, y hará todo esto mientras que A sea distinto del asterisco, y cuando B llegue al final se inicializa de nuevo a una posicion siguiente a la de A.
Probablemente hay alguna manera mas sencilla, pero es la que se me ocurre en estos momentos
Comparando cadenas lo veo mas complicado aun, no se si esto es lo que buscas.
Suerte.