#include #include #include #include #include #include #include using namespace std; const int maxn=150; set emmm; int n,f[maxn][maxn][maxn]; string t,a,b[maxn]; inline void LOW(string &s) { for(int i=0;i>n; for(int i=0;i>t; emmm.insert(t); } getline(cin,t); while(getline(cin,t)) { if(t=="LAST CASE"||t=="LAST CASE\r") return 0; stringstream ss(t); ss>>a; a="#"+a; n=0; b[++n]="#"; while(ss>>t) { LOW(t); if(emmm.find(t)!=emmm.end()) continue; n++; b[n]=t; } memset(f,0,sizeof(f)); f[1][1][0]=1; for(int i=2;i<=a.size();i++) for(int j=2;j<=n;j++) for(int k=0;k