/*
ZADATAK: stampa
JEZIK: C++
*/
#include <iostream.h>
#include <fstream.h>
#include <stdlib.h>

const int MAXN=10000;
const int MAXK=100;
const int MAXS='z'-'a'+2;
const int NS=MAXS-1;
const int NISTA=MAXS;

typedef struct{
	char c;
	char u[MAXK];
}zams;

zams zam[MAXN];
char p;
int n,k;
int poc[MAXS],kraj[MAXS];
int ob[MAXS][MAXS];


int rast(const void *x, const void *y){
	if ( (*(zams*)x).c != (*(zams*)y).c ) return (*(zams*)x).c - (*(zams*)y).c;
	int i;
	for (i=0;i<k;i++)
	 if ( (*(zams*)x).u[i] != (*(zams*)y).u[i] ) return (*(zams*)x).u[i] - (*(zams*)y).u[i];
	return 0;
}

void unos(){
//	ifstream fin("zad2.txt");

//	fin>>n>>k;
	cin>>n>>k;
	int i,j;

	for (i=0;i<n;i++){
	//	fin>>zam[i].c;
	//-	fin>>p;
	//	for (j=0;j<k;j++) fin>>zam[i].u[j];

		cin>>zam[i].c;
		for (j=0;j<k;j++) cin>>zam[i].u[j];
	}
	cin>>p;
//	fin>>p;

//	fin.close();

	qsort(zam,n,sizeof(zam[0]),rast);

	for (i=0;i<MAXS;i++) {poc[i]=-1; kraj[i]=-1;}
	for (i=0;i<n;i++){
		if (poc[ zam[i].c -'a' ]==-1) poc[ zam[i].c -'a' ]=i;
		kraj[ zam[i].c -'a' ]=i;
	}
}

void obidji(char t1, char t2){
	int i,j;
	if (t2!=NISTA) ob[t1 -'a'][t2 -'a']=1;
	//cout<<" "<<t1<<" "<<t2<<" "<<int(t2)<<" "<<zam[ kraj[t1-'a'] ].u<<endl;

	if (poc[ t1 -'a' ]!=-1){
		for (i=poc[ t1 -'a']; i<=kraj[ t1 -'a' ]; i++){
			for(j=0;j<k-1;j++) if (ob[ zam[i].u[j] -'a' ][ zam[i].u[j+1] -'a' ]==0)
				obidji(zam[i].u[j],zam[i].u[j+1]);
			if (t2!=NISTA && ob[zam[i].u[k-1] -'a'][t2 -'a']==0)
				obidji(zam[i].u[k-1],t2);
		}
	}

	if (t2!=NISTA && poc[ t2 -'a']!=-1){
		for (i=poc[ t2 -'a']; i<=kraj[ t2 -'a' ]; i++){
			if (ob[t1 -'a'][zam[i].u[0] -'a']==0)
				obidji(t1,zam[i].u[0]);
			for(j=0;j<k-1;j++) if (ob[ zam[i].u[j] -'a' ][ zam[i].u[j+1] -'a' ]==0)
				obidji(zam[i].u[j],zam[i].u[j+1]);
		}
	}


}

int main(){

	unos();

	int i,j;
	/*
	for (i=0;i<n;i++){
		cout<<zam[i].c<<" ";
		for (j=0;j<k;j++) cout<<zam[i].u[j];
		cout<<endl;
	}
	cout<<poc<<endl;
	*/

	for (i=0;i<MAXS;i++)
		for (j=0;j<MAXS;j++) ob[i][j]=0;
	obidji(	p, NISTA );

/*
	cout<<"   ";
	for (i=0;i<7;i++) cout<<char('a'+i)<<" "; cout<<endl;
	for (i=0;i<7;i++){
		cout<<char('a'+i)<<": ";
		for (j=0;j<7;j++) cout<<ob[i][j]<<" ";
		cout<<endl;
	}
*/

	int brres=0;
	for (i=0;i<NS;i++)
		for (j=0;j<NS;j++) if (ob[i][j]==1) brres++;

	cout<<brres<<endl;
	for (i=0;i<NS;i++)
		for (j=0;j<NS;j++) if (ob[i][j]==1) cout<<char(i+'a')<<char(j+'a')<<endl;

	return 0;
}