#include <bits/stdc++.h>
long long inf = (long long)1e9;
using namespace std;
int expo(int base, int exponent) {
  int ans = 1;
  while (exponent != 0) {
    if (exponent & 1) ans = (1LL * ans * base) % 1000000007;
    base = (1LL * base * base) % 1000000007;
    exponent >>= 1;
  }
  return ans % 1000000007;
}
int factorial(int n) { return (n == 1 || n == 0) ? 1 : n * factorial(n - 1); }
int solve() {
  string s1, s2;
  cin >> s1 >> s2;
  long long a1 = 0, a2 = 0, q = 0;
  long long si = (long long)s1.size();
  long double ans;
  for (long long i = 0; i < si; ++i)
    if (s1[i] == '+')
      a1++;
    else if (s1[i] == '-')
      a1--;
  for (long long i = 0; i < si; ++i)
    if (s2[i] == '+')
      a2++;
    else if (s2[i] == '-')
      a2--;
    else
      q++;
  long long d = abs(a1 - a2);
  if (d > q) {
    cout << fixed << setprecision(15) << (long double)0;
    return 0;
  }
  if (q == 0 && d == 0) {
    cout << fixed << setprecision(15) << (long double)1;
    return 0;
  }
  if (q == 0 && d != 0) {
    cout << fixed << setprecision(15) << (long double)0;
    return 0;
  }
  if (d == 0 && q % 2 != 0) {
    cout << fixed << setprecision(15) << (long double)0;
    return 0;
  }
  ans = (factorial(q) / (factorial((d + q) / 2) * factorial((q - d) / 2))) /
        pow(2, q);
  cout << fixed << setprecision(15) << ans;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int t = 1;
  while (t--) {
    solve();
  }
}
