Найти общие подстроки

У меня есть N строк. Я ищу, чтобы найти все подстроки длиной не менее 2 символов, которые встречаются, по крайней мере, в 2 строках.

Для следующих строк:

  1. меня зовут Даниэль
  2. как вас зовут?
  3. они называют меня daniel

Он должен возвращаться (исключая строки только с одним символом):

  • «имя» – 1. & 2.
  • «is» – 1. & 2.
  • «Даниэль» – 1. и 3.
  • «я» – 1. и 3.
  • "y" – 1. & 3.

Длина строк может быть очень длинной (1KB-10KB). У меня почти нет проблем с памятью (~ 2 ГБ). Мне просто нужно как можно быстрее вычислить эти общие строки.

Заранее спасибо! Дэниел.