#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int M=50004;
const int N=102;
struct node
{
char ss[N];
}aa[M];
int f[M*N][30],g[M*N][30],l,tot,v[M*N*30],vis[M*N*30],col[N],cnt;
void inset()
{
int root=0;
for(int i=0;i<l;i++)
{
if(!f[root][aa[cnt].ss[i]-'a'])
{
f[root][aa[cnt].ss[i]-'a']=++tot;
}
root=f[root][aa[cnt].ss[i]-'a'];
}
v[root]=1,root=0;
for(int i=l-1;i>=0;i--)
{
if(!g[root][aa[cnt].ss[i]-'a'])
{
g[root][aa[cnt].ss[i]-'a']=++tot;
}
root=g[root][aa[cnt].ss[i]-'a'];
}
vis[root]=1;
}
int jud(int x)
{
int root=0;
for(int i=0;i<l-1;i++)
{
if(!f[root][aa[x].ss[i]-'a'])
{
break;
}
col[i]=v[f[root][aa[x].ss[i]-'a']],root=f[root][aa[x].ss[i]-'a'];
}
root=0;
for(int i=l-1;i>0;i--)
{
if(!g[root][aa[x].ss[i]-'a'])
{
break;
}
if(vis[g[root][aa[x].ss[i]-'a']]&col[i-1])
{
return 1;
}
}
return 0;
}
int main()
{
while(scanf("%s",aa[++cnt].ss)!=EOF)
{
if(aa[cnt].ss[0]=='\n')
{
break;
}
memset(col,0,sizeof(col));
l=strlen(aa[cnt].ss);
inset();
}
for(int i=1;i<=cnt;i++)
{
l=strlen(aa[i].ss);
if(jud(i))
{
printf("%s\n",aa[i].ss);
}
}
return 0;
}
#include<cstring>
#include<algorithm>
using namespace std;
const int M=50004;
const int N=102;
struct node
{
char ss[N];
}aa[M];
int f[M*N][30],g[M*N][30],l,tot,v[M*N*30],vis[M*N*30],col[N],cnt;
void inset()
{
int root=0;
for(int i=0;i<l;i++)
{
if(!f[root][aa[cnt].ss[i]-'a'])
{
f[root][aa[cnt].ss[i]-'a']=++tot;
}
root=f[root][aa[cnt].ss[i]-'a'];
}
v[root]=1,root=0;
for(int i=l-1;i>=0;i--)
{
if(!g[root][aa[cnt].ss[i]-'a'])
{
g[root][aa[cnt].ss[i]-'a']=++tot;
}
root=g[root][aa[cnt].ss[i]-'a'];
}
vis[root]=1;
}
int jud(int x)
{
int root=0;
for(int i=0;i<l-1;i++)
{
if(!f[root][aa[x].ss[i]-'a'])
{
break;
}
col[i]=v[f[root][aa[x].ss[i]-'a']],root=f[root][aa[x].ss[i]-'a'];
}
root=0;
for(int i=l-1;i>0;i--)
{
if(!g[root][aa[x].ss[i]-'a'])
{
break;
}
if(vis[g[root][aa[x].ss[i]-'a']]&col[i-1])
{
return 1;
}
}
return 0;
}
int main()
{
while(scanf("%s",aa[++cnt].ss)!=EOF)
{
if(aa[cnt].ss[0]=='\n')
{
break;
}
memset(col,0,sizeof(col));
l=strlen(aa[cnt].ss);
inset();
}
for(int i=1;i<=cnt;i++)
{
l=strlen(aa[i].ss);
if(jud(i))
{
printf("%s\n",aa[i].ss);
}
}
return 0;
}

