#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define endl '\n'
ll N = 1e9+7;
ll oo =1e13;
const ll maxx = 1000000 + 3;
ll n,k=0,q,x,y,z,l,r,mid,ans;
string s1,s2;
ll go(ll ind,ll c) {
if (ind== s2.size()) {
if (c==ans)return 1;
return 0;
}
ll res=0;
if (s2[ind]=='+')res += go(ind+1,c+1);
else if (s2[ind]=='-')res += go(ind+1,c-1);
else if (s2[ind]=='?') {
res += go(ind+1,c-1)+go(ind+1,c+1);
}
return res;
}
void solve() {
ll qcnt=0;
cin>>s1>>s2;
for (char s :s1) {
if (s=='+')ans++;
else ans--;
}
for (char s :s2) {
if (s=='?') qcnt++;
else if (s=='+')k++;
else k--;
}
if (qcnt==0) {
if (ans==k) cout << 1;
else cout << 0;
}else {
double prob = go(0,0) / pow(2.0, qcnt);
cout << fixed << setprecision(12) << prob << endl;
}
}
int main() {
ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
ll t=1 ;
// cin >>t;
while (t--) {
ans=0;
solve();
}
}
CiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwojZGVmaW5lIGxsIGxvbmcgbG9uZwojZGVmaW5lIGVuZGwgJ1xuJwpsbCBOID0gMWU5Kzc7CmxsIG9vID0xZTEzOwpjb25zdCBsbCBtYXh4ID0gMTAwMDAwMCArIDM7CmxsIG4saz0wLHEseCx5LHosbCxyLG1pZCxhbnM7CnN0cmluZyBzMSxzMjsKbGwgZ28obGwgaW5kLGxsIGMpIHsKICAgIGlmIChpbmQ9PSBzMi5zaXplKCkpIHsKICAgICAgICBpZiAoYz09YW5zKXJldHVybiAxOwogICAgICAgIHJldHVybiAwOwogICAgfQogICAgbGwgcmVzPTA7CiAgICBpZiAoczJbaW5kXT09JysnKXJlcyArPSBnbyhpbmQrMSxjKzEpOwogICAgZWxzZSBpZiAoczJbaW5kXT09Jy0nKXJlcyArPSBnbyhpbmQrMSxjLTEpOwogICAgZWxzZSBpZiAoczJbaW5kXT09Jz8nKSB7CiAgICAgICAgcmVzICs9IGdvKGluZCsxLGMtMSkrZ28oaW5kKzEsYysxKTsKICAgIH0KICAgIHJldHVybiByZXM7Cn0Kdm9pZCBzb2x2ZSgpIHsKICAgIGxsIHFjbnQ9MDsKICAgIGNpbj4+czE+PnMyOwogICAgZm9yIChjaGFyIHMgOnMxKSB7CiAgICAgICAgaWYgKHM9PScrJylhbnMrKzsKICAgICAgICBlbHNlIGFucy0tOwogICAgfQoKICAgIGZvciAoY2hhciBzIDpzMikgewogICAgICAgIGlmIChzPT0nPycpIHFjbnQrKzsKICAgICAgICBlbHNlIGlmIChzPT0nKycpaysrOwogICAgICAgIGVsc2Ugay0tOwogICAgfQogICAgaWYgKHFjbnQ9PTApIHsKICAgICAgICBpZiAoYW5zPT1rKSBjb3V0IDw8IDE7CiAgICAgICAgZWxzZSBjb3V0IDw8IDA7CiAgICB9ZWxzZSB7CiAgICAgICAgZG91YmxlIHByb2IgPSBnbygwLDApIC8gcG93KDIuMCwgcWNudCk7CiAgICAgICAgY291dCA8PCBmaXhlZCA8PCBzZXRwcmVjaXNpb24oMTIpIDw8IHByb2IgPDwgZW5kbDsKICAgIH0KfQppbnQgbWFpbigpIHsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOyBjaW4udGllKDApOyBjb3V0LnRpZSgwKTsKICAgIGxsIHQ9MSA7CiAgICAvLyBjaW4gPj50OwogICAgd2hpbGUgKHQtLSkgewogICAgICAgIGFucz0wOwogICAgICAgIHNvbHZlKCk7CiAgICB9Cn0=