// T1 http://acm.swust.edu.cn/oj/problem/860/
//关于T1的分析
//这道题用链表显得大材小用了,因为本身就是小数目操作
#include <stdio.h>
#include <string.h>
//char str[105], cmd[6], ch[6];
//之所以 cmd 用数组是因为 "END" 的接收需要,而且 %c 的输入格式会接收 '\n'
//之所以 ch 用数组是因为 %c 的输入格式会接收 '\n'
//3或者6或者1都是可以的
char str[105], cmd[3], ch[1];
int main()
{
int i, j, k, l;
//考虑到题意是多组操作
while(scanf("%s", str) == 1)
{
while(scanf("%s", cmd) == 1 && strcmp(cmd, "END") != 0)
{
scanf("%s", ch);
l = strlen(str);
if(cmd[0] == 'A') //A操作
{
scanf("%d", &k);
--k;
if(k > l) k = l;
//////////////////////////////////////////////////////////////////////////
//这是一段不错的代码,有着不错的思想
//很适合小数目操作,但对于大数目,就不好了
//前面的后移, 腾出要插入元素的位置
// i 是最后一个元素下标
for(i = l - 1; i >= k; --i)
str[i+1] = str[i];
//////////////////////////////////////////////////////////////////////////
str[k] = ch[0];
str[++l] = '\0';//结束标识需要加上
}else
{ //B操作
//////////////////////////////////////////////////////////////////////////
//这是以一段优秀的代码,有着优秀的思想
//很适合小数目操作,但对于大数目,就不好了
//很优秀的处理了元素的查找并删除并移位
for(i = j = 0; i < l; ++i)
{
if(str[i] != ch[0])
str[j++] = str[i];
}
str[j] = '\0';
//////////////////////////////////////////////////////////////////////////
}
}
puts(str);
}
return 0;
}