#include <bits/stdc++.h>
const int MAX_LEN = 1010;
using namespace std;
template <typename U, typename V>
string to_string(pair<U, V>);
string to_string(const string& e_) { return "\"" + e_ + "\""; }
string to_string(char e_) { return "\'" + string(1, e_) + "\'"; }
string to_string(bool e_) { return e_ ? "true" : "false"; }
template <typename T>
string to_string(T e_) {
  string s_ = "[ ";
  for (const auto& x_ : e_) s_ += to_string(x_) + " ";
  return s_ + "]";
}
template <typename U, typename V>
string to_string(pair<U, V> e_) {
  return "(" + to_string(e_.first) + ", " + to_string(e_.second) + ")";
}
void dbg_str() { ; }
template <typename U, typename... V>
void dbg_str(U u, V... v) {
  ;
  dbg_str(v...);
}
long long int a, b, c, d;
long long int ans;
char op[3];
void calminval(vector<long long int> values) {
  ;
  int num = (int)values.size();
  if (num == 1) {
    ans = min(ans, values[0]);
    return;
  }
  for (int i = 0; i < num; i++)
    for (int j = i + 1; j < num; j++) {
      vector<long long int> temp;
      for (int k = 0; k < num; k++)
        if (k != i && k != j) temp.push_back(values[k]);
      if (op[4 - num] == '*')
        temp.push_back(values[i] * values[j]);
      else
        temp.push_back(values[i] + values[j]);
      calminval(temp);
    }
}
int main() {
  scanf("%lld %lld %lld %lld\n", &a, &b, &c, &d);
  scanf("%c %c %c", &op[0], &op[1], &op[2]);
  ans = 1e17;
  calminval({a, b, c, d});
  printf("%lld\n", ans);
}
