var p1,p2,p3,i,j,k:integer;
m,p:char;
s:string;
mn,pn:integer;
function xtrans(A:char):char;
var i:integer;
begin
if ord(A)<=90 then xtrans:=chr(ord(A)+32)
else xtrans:=A;
end;
function dtrans(A:char):char;
var i:integer;
begin
if ord(A)>90 then dtrans:=chr(ord(A)-32)
else dtrans:=A;
end;
begin
readln(p1,p2,p3);
p:='+';
repeat
repeat
read(m);
if m<>'-' then write(m);
if m<>'-' then p:=m;
if p='+' then begin write(m); m:='+'; end;
until (m='-') or eoln;
if eoln then exit;
read(m);
mn:=ord(m);pn:=ord(p);
if mn<=pn then begin write('-',m); p:=m; end
else if mn=pn+1 then begin write(m); p:=m; end
else if (mn<ord('A')) or (mn>ord('z')) then
begin
if p1=3 then
for i:=mn-1 downto pn+1 do
for j:=1 to p2 do write('*')
else
begin
if p3=1 then
begin
for i:=pn+1 to mn-1 do
for j:=1 to p2 do
write(chr(i));
end
else
for i:=mn-1 downto pn+1 do
for j:=1 to p2 do
write(chr(i));
end;
write(m); p:=m;
end
else
begin
case p1 of
1:begin
if p3=1 then
begin
for i:=pn+1 to mn-1 do
for j:=1 to p2 do
write(xtrans(chr(i)));
end
else
begin
for i:=mn-1 downto pn+1 do
for j:=1 to p2 do
write(xtrans(chr(i)));
end
end;
2:begin
if p3=1 then
for i:=pn+1 to mn-1 do
for j:=1 to p2 do
write(dtrans(chr(i)))
else
for i:=mn-1 downto pn+1 do
for j:=1 to p2 do
write(dtrans(chr(i)));
end;
3:for i:=mn-1 downto pn+1 do
for j:=1 to p2 do write('*');
end;
write(m); p:=m;
end;
until eoln;
readln;
end.