Como devo encontrar sequências repetidas de palavras

Preciso detectar a presença de vários blocos de dados colunares, apenas com seus títulos. Nada mais se sabe sobre os dados, exceto as palavras de cabeçalho, que são diferentes para cada conjunto de dados.

Importante, não se sabe de antemão quantas palavras existem em cada bloco nem, portanto, quantos blocos existem.

Igualmente importante, a lista de palavras é sempre relativamente curta - menos de 20.

Portanto, dada uma lista ou matriz de palavras de cabeçalho, como:

Opt
Object
Type
Opt
Object
Type
Opt
Object
Type

qual é a maneira mais eficiente de processamento para determinar se ela consiste inteiramente na sequência de repetição:

Opt
Object
Type

Deve ser uma correspondência exata, então meu primeiro pensamento é pesquisar [1+] procurando correspondências para [0], chamando-as de índice n, m, ... Então, se elas são equidistantes, verifique [1] == [n + 1] == [m + 1] e [2] == [n + 2] == [m + 2] etc.

EDIT: ele deve funcionar para conjuntos de palavras em que algumas das palavras são repetidas em um bloco, portanto

Opt
Opt
Object
Opt
Opt
Object

é um conjunto de 2

Opt
Opt
Object

questionAnswers(4)

yourAnswerToTheQuestion