#include<bits/stdc++.h>
using namespace std;
int p1,p2,p3;
int len;
string str;
char str1[250];
int change_str(int t)
{
int count=1;
len=str[t+1]-str[t-1]-1;
if(t==0) str.replace(t,1,"@");//第一个字符就是-
else if(str[t+1]=='-') str.replace(t,2,"@@");//两个连续--
else if(str[t-1]>=str[t+1]) str.replace(t,1,"@");//-的后面比前面大
else if(str[t-1]<='9'&&str[t+1]>'9'||str[t+1]<='9'&&str[t-1]>'9'||str[t-1]>='a'&&str[t+1]<'a'||str[t+1]>='a'&&str[t-1]<'a') str.replace(t,1,"@");//-的左右不匹配
else if(str[t+1]-str[t-1]==1) str.replace(t,1,"");//-前后正好相连
else if(str[t-1]<str[t+1])//-左右匹配且后面比前面大
{
if(p1==1)
{
if(p3==1)
{
for(int i=0;i<len*p2;i+=p2)
{
int p=p2;
while(p--)
str1[i+p]=(char)((int)(str[t-1]+count));
count++;
}
str.replace(t,1,str1);
memset(str1,'\0',sizeof(str1));
}
else
{
for(int i=0;i<len*p2;i+=p2)
{
int p=p2;
while(p--)
str1[i+p]=(char)((int)(str[t+1]-count));
count++;
}
str.replace(t,1,str1);
memset(str1,'\0',sizeof(str1));
}
}
else if(p1==2)
{
if(p3==1)
{
if(str[t-1]<='9')
{
for(int i=0;i<len*p2;i+=p2)
{
int p=p2;
while(p--)
str1[i+p]=(char)((int)(str[t-1]+count));
count++;
}
str.replace(t,1,str1);
memset(str1,'\0',sizeof(str1));
}
else
{
for(int i=0;i<len*p2;i+=p2)
{
int p=p2;
while(p--)
str1[i+p]=(char)((int)(str[t-1]+count-32));
count++;
}
str.replace(t,1,str1);
memset(str1,'\0',sizeof(str1));
}
}
else
{
if(str[t-1]<='9')
{
for(int i=0;i<len*p2;i+=p2)
{
int p=p2;
while(p--)
str1[i+p]=(char)((int)(str[t+1]-count));
count++;
}
str.replace(t,1,str1);
memset(str1,'\0',sizeof(str1));
}
else
{
for(int i=0;i<len*p2;i+=p2)
{
int p=p2;
while(p--)
str1[i+p]=(char)((int)(str[t+1]-count-32));
count++;
}
str.replace(t,1,str1);
memset(str1,'\0',sizeof(str1));
}
}
}
else
{
for(int i=0;i<len*p2;i+=p2)
str1[i]='*';
str.replace(t,1,str1);
memset(str1,'\0',sizeof(str1));
}
}
}
int main()
{
cin>>p1>>p2>>p3;
cin>>str;
while(str.find("-")!=string::npos)
change_str(str.find("-"));
for(int i=0;i<str.length();i++)
{
if(str[i]=='@') cout<<'-';
else cout<<str[i];
}
return 0;
}