Я бы пошел с трия. Используя три, вставьте все строки так, чтобы последний узел каждой строки был отмечен флагом, затем для каждой строки пройдитесь по его пути и проверьте, установлен ли какой-либо узел на странице. Если да, то строка, заканчивающаяся на этом узле, является префиксом строки, которую вы анализируете.
Если предположить, что n = количество строк, а k = средняя длина, то при вставке и анализе в обоих случаях берется O (kn).
Префиксное дерево (три с узлами длиннее одного символа) может быть более эффективным, но не таким простым в реализации.