这道题挺好的
#include <cstdio>
#include <cstring>
long long n=1;//树的种数
void cpy(char n[],char o[],int s,int e){
int i;
for(i=s;i<=e;i++){
n[i-s]=o[i];
}
n[i-s]='\0';
}
void find(char a1[],char a2[],int len){
if(len==1)
return;
char l1[50],l2[50];
char r1[50],r2[50];
int i=len-1;
while(a2[i]!=a1[1])i--;
cpy(l1,a1,1,i+1);
cpy(r1,a1,i+2,len-1);
cpy(l2,a2,0,i);
cpy(r2,a2,i+1,len-2);
find(l1,l2,strlen(l1));
if(strlen(r1)==0)
n*=2;
else
find(r1,r2,strlen(r1));
}
int main()
{
char a1[50],a2[50];
scanf("%s",a1);
scanf("%s",a2);
find(a1,a2,strlen(a1));
printf("%lld",n);
return 0;
}