Como fazer isso da maneira mais rápida?

Preciso descobrir quantas vezes uma palavra aparece na string, mas o problema é que a palavra que você precisa encontrar pode ter espaços no meio, por exemplo, você quer ver quantas vezes a palavratexto aparece em * tOeOxOt "e forneceria a saída 1 ou, por exemplo, emtexto daria a saída 2, eu escrevi esse procedimento em pascal para esse

procedure search(x:integer; i:integer);
var
x2:integer;
begin
x2:=x+1;
while (x2<=n) and (x2>0) do begin
    if myarray[x2]=mystring[i+1] then
        if i=length(mystring)-1 then
        final:=final+1
        else
        search(x2,i+1);

x2:=x2+1;
end;
end;

e verifica o número de vezes que aparece em uma letra, por exemplo, se eu tiverttext só me daria um porque só verifico desde o primeirot então eu chamo a função toda vez que encontro umt na string, mas esse método é muito lento para matrizes 2D com muitos caracteres, como 1000 x 1000, por isso estou procurando uma solução mais rápida.

questionAnswers(1)

yourAnswerToTheQuestion