program bor1;
{$APPTYPE CONSOLE}
uses
SysUtils;
const
maxEl=1000;
type
PEl = ^TEl;
TEl = record
f : boolean; // Имеется ли в множестве данная строка
Link : array ['a' .. 'z'] of PEl; // Указатели на "детей"
end;
var
bor : array [0 .. maxEl] of TEl;
uk : integer;
root : PEl;
procedure Init;
begin
fillchar(bor, sizeof(bor), 0);
uk := 0;
root := @bor[0];
end;
procedure Insert(const s:string);
var
cur : PEl;
i : integer;
begin
cur:=root;
for i := 1 to length(s) do
begin
if cur^.Link[s[i]] = nil then
begin
inc(uk);
cur^.Link[s[i]] := @bor[uk];
end;
cur:=cur^.Link[s[i]];
end;
cur^.f := true;
end;
procedure Delete(const s:string);
var
cur : PEl;
i : integer;
begin
cur:=root;
for i := 1 to length(s) do
begin
if cur^.Link[s[i]] = nil then
begin
Writeln('No such string');
exit;
end;
cur:=cur^.Link[s[i]];
end;
cur^.f := false;
end;
function Search(const s:string) : boolean;
var
cur : PEl;
i : integer;
begin
cur:=root;
for i := 1 to length(s) do
begin
if cur^.Link[s[i]] = nil then
begin
result := false;
exit;
end;
cur:=cur^.Link[s[i]];
end;
result := cur^.f;
end;
begin
Init;
Insert('SFdsdf');
Insert('SFdsdwe');
Insert('SFdew');
Writeln(Search('SFdew'));
Readln;
end.