typedef unsigned char B;char*x[]={ #include "dict.h" 0};typedef struct L{B*s;struct L*n;}L; L*h[128],*l[128],*s[128],Z[sizeof x/sizeof*x],*F=Z;int c[256],m,a=1; int k(B*q){int g=0;B*p=q;while(*p)g|=!c[*p++]--;return g-1&p-q;} void u(B*p){while(*p)c[*p++]++;} void S(int N,int r,int t,L*W){L*w;int i,n; for(n=r0;n--)for(w=n==N?W:h[n];s[t]=w;u(w->s),w=w->n)if(k(w->s)) if(n==r){if(t==m-1)for(i=a=0;i<=t;i++)printf("%s%c",s[i]->s,in:&h[g])=F++)->s=p; while(++m<128)S(127,n,0,h[127]); return a;}