#include <bits/stdc++.h>
using namespace std;
char aa[20], bb[20];
long long fact[12];
int main() {
  fact[0] = fact[1] = 1;
  for (int i = 2; i < 12; i++) fact[i] = fact[i - 1] * i;
  int pos1 = 0, neg1 = 0, pos2 = 0, neg2 = 0, que = 0, div;
  scanf("%s", aa);
  scanf("%s", bb);
  for (int i = 0; aa[i] != '\0'; i++) {
    if (aa[i] == '+') pos1++;
    if (aa[i] == '-') neg1++;
    if (bb[i] == '+') pos2++;
    if (bb[i] == '-') neg2++;
    if (bb[i] == '?') que++;
  }
  if (pos2 > pos1 || neg2 > neg1) {
    printf("0.0000000000000000000");
    return 0;
  }
  if (pos1 == pos2 && neg1 == neg2) {
    printf("1.0000000000000000000");
    return 0;
  }
  div = 1;
  for (int i = 0; i < que; i++) div *= 2;
  long long temp1 = 1, num, temp2 = 1;
  pos2 = pos1 - pos2;
  neg2 = neg1 - neg2;
  temp1 = fact[que] / (fact[pos2]);
  temp1 = temp1 / (fact[que - pos2]);
  num = temp1 * temp2;
  double a = 1.0 * num;
  double b = 1.0 * div;
  double c = (1.0 * a) / b;
  printf("%0.20Lf", c);
  return 0;
}
