{
"GRIGORE MOISIL"
NATIONAL COMPUTER SCIENCE COLLEGE
NAME: MIRESTEAN Andrei
DIVISION: INTERMEDIATE 5
GRADE: 11
}
var ss:string;
function
ok(poz,l:integer):boolean;
var i:integer;
begin
ok:=true;
for i:=poz to poz+l-1 do
if ss[i] = '*' then
begin
ok:=false;
break;
end;
end;
procedure
replace(s1,s2:string; var s:string);
var poz,j,i:integer;
aux:string;
begin
i:=1;
while ( i<= length(s)) do
begin
//poz:=pos(s1,s);
aux:=copy(s,i,length(s1));
if ok(i,length(s1)) and (aux = s1) then
begin
delete(s,i,length(s1));
insert(s2,s,i);
delete(ss,i,length(s1));
for j:=1 to length(s2) do
insert('*',ss,i);
end;
inc(i);
end;
end;
procedure
replace5(s1,s2:char; var s:string);
var i,poz:integer;
begin
i:=1;
while i <= length(s) do
begin
if (s[i] = s1) and
(ss[i] = ' ') then
if (i+1 <= length(s)) and (s[i+1] in ['A'..'Z']) then
begin
s[i]:=s2;
ss[i]:='*';
end;
inc(i);
end;
end;
procedure replace10(var
s:string);
var i:integer;
k:boolean;
begin
i:=1;
k:=true;
while i<=length(s) do
begin
if ( i > 1 ) and ( s[i-1] in ['A'..'Z']) then
if (s[i] = 'I') and k and (ss[i] = ' ') then
begin
k:=false;
delete(s,i,1);
insert('EE',s,i);
delete(ss,i,1);
insert('**',ss,i);
end;
if s[i] = ' ' then k:=true;
inc(i);
end;
end;
procedure replacesf(s1,s2:string;var
s:String);
var i,j,poz:integer;
begin
i:=1;
while i <= length(s) do
begin
// if (s[i] = s1) and
( (i+1 > length(s)) or ( (i+1 <=length(s)) and ( not (s[i] in
['A'..'Z'])))) then
if (i =length(s) ) or ( (i < length(s) ) and (not (s[i]
in ['A'..'Z']) ) ) then
begin
poz:=i-length(s1)+1;
if i < length(s) then poz:=poz-1;
if (poz >0) and (copy(s,poz,length(s1)) = s1)
and ok(poz,length(s1)) then
begin
delete(s,poz,length(s1));
insert(s2,s,poz);
delete(ss,poz,length(s1));
for j:=1 to length(s2) do
insert('*',ss,i);
end;
end;
inc(i);
end;
end;
procedure replace14(var
s:string);
var i:integer;
begin
i:=1;
while i<=length(s) do
begin
if (s[i]='U') and (ss[i] = ' ') and (i-1 > 0) and (
s[i-1] in ['A'..'Z']) then
begin
delete(s,i,1);
insert('OO',s,i);
delete(ss,i,1);
insert('**',ss,i);
end;
inc(i);
end;
end;
procedure bork(var
s,ss:string);
var i,j:integer;
begin
i:=1;
while i<=length(s) do
begin
if (s[i] = '.') and (ss[i] <> '*') then
begin
insert(' BORK BORK BORK!',s,i+1);
ss[i]:='*';
for j:=1 to 16 do
insert('*',ss,i+1);
end;
inc(i);
end;
end;
procedure citire;
var s:string;
i:integer;
begin
assign(input,'chef.in');
reset(input);
assign(output,'chef.out');
rewrite(output);
while not eof do
begin
readln(s);
ss:='';
for i:=1 to length(s) do
ss:=ss+' ';
bork(s,ss);
replace('THE','ZEE',s);
replace('AN','UN',s);
replace('AU','OO',s);
replace5('A','E',s);
replace('OW','OO',s);
replace('TION','SHUN',s);
replace('IR','UR',s);
replace('O','U',s);
replace10(s);
replacesf('EN','EE',s);
replace('F','FF',s);
replacesf('E','E-A',s);
replace14(s);
replace('V','F',s);
replace('W','V',s);
writeln(s);
end;
close(input); close(output);
end;
begin
citire;
end.