#include<bits/stdc++.h>
#define maxl 200010
#define maxn 210
using namespace std;
char ss[maxl];
int cnt,LEN;
bool dp[maxl];
struct node{
string s;
int len;
}fft[maxn];
bool cmp(node CCF,node IOI){
return CCF.len<IOI.len;
}
int res,lenstart[50];
bool havelen[50];
signed main(){
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
while(1){
cin>>(fft[++cnt].s);
fft[cnt].len=(fft[cnt].s.size());
if(fft[cnt].s==".")break;
}
cin>>(ss+1);LEN=strlen(ss+1);
sort(fft+1,fft+1+cnt,cmp);fft[0].len=0;
for(int i=1;i<=cnt;++i)havelen[fft[i].len]=1;
for(int i=1;i<=cnt;++i){if(fft[i].len!=fft[i-1].len){lenstart[fft[i].len]=i;}}
dp[0]=1;
for(int i=1;i<=LEN;++i){
if(dp[i])continue;
for(int j=0;j<=i-1;++j){
if(!dp[j])continue;
if(!havelen[i-j])continue;
for(int k=lenstart[i-j];1;k++){
if(fft[k].len!=i-j)break;
bool f=1;
for(int q=1;q<=i-j;++q){if(fft[k].s[q-1]!=ss[j+1+q-1]){f=0;break;}}
if(f){dp[i]=1;break;}
}
if(dp[i])break;
}
}
for(int i=LEN;i>=0;--i){if(dp[i]){cout<<i;return 0;}}
return 0;
}