program p1751; var next:array[0..1000]of longint; s,p:ansistring; i,j,k,l:longint; begin for l:=1 to 3 do begin readln(s); i:=1; while s[i]<>' ' do inc(i); inc(i); p:=copy(s,i,length(s)-(i-1)); delete(s,i-1,length(s)-(i-2)); j:=1;k:=0; next[1]:=0; while j<length(p) do if (k=0)or(p[j]=p[k])then begin inc(k);inc(j); next[j]:=k; end else k:=next[k]; j:=1; k:=1; while (j<=length(s))and(k<=length(p))do if (k=0)or(s[j]=p[k]) then begin inc(k); inc(j); end else k:=next[k]; if k>length(p) then writeln(j-length(p)) else writeln(0); end; end. /************************************************************** Problem: 2152 User: admin Language: Pascal Result: Wrong Answer ****************************************************************/