/*
ID: 551100k1
LANG: C++
TASK: prefix
*/
#include<stdio.h>
#include<string.h>
#include<iostream>
using namespace std;
string s;
char c[205][15],arr[200005];
int dp[200005]={0},len[205];
int main(){
freopen("prefix.in","r",stdin);
freopen("prefix.out","w",stdout);
int top=0,i,j,k,ans=0,flag;
while(scanf("%s",c[top])){
if(strcmp(c[top],".")==0) break;
len[top]=strlen(c[top]);
top++;
}
s=" ";
while(scanf("%s",arr)!=EOF){
s+=string(arr);
}
dp[0]=1;
for(i=1;i<s.length();i++){
for(j=0;j<top;j++){
if(len[j]<=i && dp[i-len[j]]==1){
flag=1;
for(k=len[j]-1;k>=0;k--){
if(c[j][k]!=s[i-len[j]+k+1]){
flag=0;
break;
}
}
if(flag){
dp[i]=1;
if(i>ans) ans=i;
}
}
}
}
printf("%d\n",ans);
}
沒有留言:
張貼留言