#include<bits/stdc++.h>
using namespace std;
double tot=1;
int loc;
string a,b;
int ans;
int n;
void try_(int i,int l)
{
if (i==n)
ans+=(l==loc);
else
{
if (b[i]=='+')try_(i+1,l+1);
else if (b[i]=='-')try_(i+1,l-1);
else {
try_(i+1,l+1);
try_(i+1,l-1);
}
}
}
int main()
{
cin>>a>>b;
int num=0;
n=a.size();
for (int i=0;i<n;i++){
if (b[i]=='?')num++;
if (a[i]=='+')loc++;
else loc--;
}
tot=pow(2.0, 1.0*num );
try_(0,0);
cout<<fixed<<setprecision(12)<<ans/tot<<endl;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKZG91YmxlIHRvdD0xOwppbnQgbG9jOwpzdHJpbmcgYSxiOwppbnQgYW5zOwppbnQgbjsKdm9pZCB0cnlfKGludCBpLGludCBsKQp7CiAgaWYgKGk9PW4pCiAgICBhbnMrPShsPT1sb2MpOwogIGVsc2UKICB7CiAgICBpZiAoYltpXT09JysnKXRyeV8oaSsxLGwrMSk7CiAgICBlbHNlIGlmIChiW2ldPT0nLScpdHJ5XyhpKzEsbC0xKTsKICAgIGVsc2UgewogICAgCXRyeV8oaSsxLGwrMSk7CiAgICB0cnlfKGkrMSxsLTEpOwogICAgCQogICAgfQogIH0KfQppbnQgbWFpbigpCnsKICBjaW4+PmE+PmI7CiAgaW50IG51bT0wOwogICBuPWEuc2l6ZSgpOwogIGZvciAoaW50IGk9MDtpPG47aSsrKXsKICAgIGlmIChiW2ldPT0nPycpbnVtKys7CiAgICBpZiAoYVtpXT09JysnKWxvYysrOwogICAgZWxzZSBsb2MtLTsKICB9CiAgdG90PXBvdygyLjAsIDEuMCpudW0gKTsKICB0cnlfKDAsMCk7CiAgY291dDw8Zml4ZWQ8PHNldHByZWNpc2lvbigxMik8PGFucy90b3Q8PGVuZGw7Cn0=