bugs.cpp
//
// File: bugs.cc
// Author: cteam051
//
// Created on October 27, 2012, 1:55 PM
//
#include <stdlib.h>
#include <cstdio>
#include <cstring>
char Bug [1001];
char line [2000001];
char res[2000001];
int resLen;
int nexts[2000001];
void rec(int i){
int result=0;
int bugI=1;
int startI=i;
i=nexts[i];
while(bugI<strlen(Bug)){
if (Bug[0]==line[i-1]){
rec(nexts[i]);
}
if (Bug[bugI]!=line[i-1]){
return;
}
i=nexts[i];
bugI++;
}
nexts[startI-2]=i;
return;
}
void first(){
int i;
resLen=0;
int lineLen=strlen(line);
for (int k=0; k<lineLen; k++){
nexts[k]=k+1;
}
i=1;
while (i-1!=lineLen){
if (line[i-1]==Bug[0])
rec(nexts[i]);
i=nexts[i];
}
i=0;
while (i-1!=lineLen){
i=nexts[i];
res[resLen++]=line[i-1];
}
res[resLen]='\0';
printf("%s\n", res);
}
int main(int argc, char** argv) {
int N;
while (true) {
if (scanf("%d ", &N)!=1)return (0);
gets(Bug);
for (int idx = 0; idx < N; idx++) {
gets(line);
first();
}
}
return (0);
}