#include<iostream>
#include<algorithm>
#include<string>
using namespace std;

string txt[101]={},bf;
int kx,ky,x;

void A(){kx=0;}
void E(){kx=txt[ky].size();}
void P(){
	if(ky)ky--;
	A();
}
void N(){
	if(x-1!=ky)ky++;
	A();
}
void F(){
	if(kx!=txt[ky].size())kx++;
	else if(kx==txt[ky].size()&&x-1!=ky)N();
}
void B(){
	if(kx)kx--;
	else if(!kx&&ky){
		ky--;
		E();
	}
}
void D(){
	if(kx!=txt[ky].size()){
		txt[ky]=txt[ky].substr(0,kx)+txt[ky].substr(kx+1);
	}
	else if(kx==txt[ky].size()&&ky!=x-1){
		txt[ky]+=txt[ky+1];
		for(int i=ky+1;i<x;i++)txt[i]=txt[i+1];
		txt[x]="";
		x--;
	}
}
void K(){
	if(kx==txt[ky].size()&&x-1!=ky){
		D();
		bf="\n";
	}
	else if(kx!=txt[ky].size()){
		bf=txt[ky].substr(kx);
		txt[ky]=txt[ky].substr(0,kx);
	}
}
void Y(){
	if(bf=="\n"){
		//txt[ky+1]=txt[ky].substr(kx)+txt[ky+1];
		//txt[ky]=txt[ky].substr(0,kx);
		//if(ky+1==x)x++;
		string next = txt[ky].substr(kx);
		txt[ky]=txt[ky].substr(0,kx);
		x++;
		for(int i = x - 1; i >= ky + 2; i--)
			txt[i] = txt[i - 1];
		txt[ky + 1] = next;
		N();
	}
	else if(bf!=""){
		txt[ky]=txt[ky].substr(0,kx)+bf+txt[ky].substr(kx);
		kx+=bf.size();
	}
}

int main(){
	string s;
	kx=ky=x=0; bf="";
	while(getline(cin,s),s!="END_OF_TEXT")txt[x++]=s;
	while(cin>>s,s!="-"){
		if(s=="a")A();
		if(s=="e")E();
		if(s=="p")P();
		if(s=="n")N();
		if(s=="f")F();
		if(s=="b")B();
		if(s=="d")D();
		if(s=="k")K();
		if(s=="y")Y();
#if 0
		cerr << "ROW: " << ky << "COL: " << kx << endl;
		for(int i = 0; i < x; i++) cerr << txt[i] << endl;
#endif
	}
	for(int i=0;i<x;i++)cout<<txt[i]<<endl;
}