#include <bits/stdc++.h>
using namespace std;
const int INF = 1e9;
struct nodo {
  int izq, der, valor, suma;
  nodo(int v) : izq(-1), der(-1), valor(v), suma(0) {}
};
void Construye(string &S, vector<nodo> &arbol, int raiz, int &pos) {
  if (S[pos] >= '0' && S[pos] <= '9') {
    arbol[raiz].izq = arbol.size();
    arbol.push_back(nodo(S[pos] - '0'));
    pos++;
  } else {
    arbol[raiz].izq = arbol.size();
    arbol.push_back(nodo(-1));
    pos++;
    Construye(S, arbol, arbol[raiz].izq, pos);
    pos++;
  }
  pos++;
  if (pos == S.size()) return;
  if (S[pos] >= '0' && S[pos] <= '9') {
    arbol[raiz].der = arbol.size();
    arbol.push_back(nodo(S[pos] - '0'));
    pos++;
  } else {
    arbol[raiz].der = arbol.size();
    arbol.push_back(nodo(-1));
    pos++;
    Construye(S, arbol, arbol[raiz].der, pos);
    pos++;
  }
  arbol[raiz].suma =
      arbol[arbol[raiz].izq].suma + arbol[arbol[raiz].der].suma + 1;
}
vector<vector<int> > DPm, DPM;
int Menor(int pos, int quedan, vector<nodo> &arbol, bool f);
int Mayor(int pos, int quedan, vector<nodo> &arbol, bool f);
int Menor(int pos, int quedan, vector<nodo> &arbol, bool f) {
  if (arbol[pos].valor != -1) {
    if (quedan != 0)
      return INF;
    else
      return arbol[pos].valor;
  }
  if (quedan > arbol[pos].suma) return INF;
  if (DPm[pos][quedan] != INF * 2) return DPm[pos][quedan];
  int p = INF, n = INF;
  if (f) {
    if (quedan) {
      int l = min(quedan - 1, arbol[arbol[pos].izq].suma), act;
      for (int i = 0; i <= l; i++) {
        act = Menor(arbol[pos].izq, i, arbol, f) +
              Menor(arbol[pos].der, quedan - 1 - i, arbol, f);
        if (act < p) p = act;
      }
    }
    if (quedan < arbol[pos].suma) {
      int l = min(quedan, arbol[arbol[pos].izq].suma), act;
      for (int i = 0; i <= l; i++) {
        act = Menor(arbol[pos].izq, i, arbol, f) -
              Mayor(arbol[pos].der, quedan - i, arbol, f);
        if (act < n) n = act;
      }
    }
  } else {
    if (quedan) {
      int l = min(quedan - 1, arbol[arbol[pos].izq].suma), act;
      for (int i = 0; i <= l; i++) {
        act = Menor(arbol[pos].izq, i, arbol, f) -
              Mayor(arbol[pos].der, quedan - 1 - i, arbol, f);
        if (act < p) p = act;
      }
    }
    if (quedan < arbol[pos].suma) {
      int l = min(quedan, arbol[arbol[pos].izq].suma), act;
      for (int i = 0; i <= l; i++) {
        act = Menor(arbol[pos].izq, i, arbol, f) +
              Menor(arbol[pos].der, quedan - i, arbol, f);
        if (act < n) n = act;
      }
    }
  }
  return DPm[pos][quedan] = min(p, n);
}
int Mayor(int pos, int quedan, vector<nodo> &arbol, bool f) {
  if (arbol[pos].valor != -1) {
    if (quedan != 0)
      return -INF;
    else
      return arbol[pos].valor;
  }
  if (quedan > arbol[pos].suma) return -INF;
  if (DPM[pos][quedan] != INF * 2) return DPM[pos][quedan];
  int p = -INF, n = -INF;
  if (f) {
    if (quedan) {
      int l = min(quedan - 1, arbol[arbol[pos].izq].suma), act;
      for (int i = 0; i <= l; i++) {
        act = Mayor(arbol[pos].izq, i, arbol, f) +
              Mayor(arbol[pos].der, quedan - 1 - i, arbol, f);
        if (act > p) p = act;
      }
    }
    if (quedan < arbol[pos].suma) {
      int l = min(quedan, arbol[arbol[pos].izq].suma), act;
      for (int i = 0; i <= l; i++) {
        act = Mayor(arbol[pos].izq, i, arbol, f) -
              Menor(arbol[pos].der, quedan - i, arbol, f);
        if (act > n) n = act;
      }
    }
  } else {
    if (quedan) {
      int l = min(quedan - 1, arbol[arbol[pos].izq].suma), act;
      for (int i = 0; i <= l; i++) {
        act = Mayor(arbol[pos].izq, i, arbol, f) -
              Menor(arbol[pos].der, quedan - 1 - i, arbol, f);
        if (act > p) p = act;
      }
    }
    if (quedan < arbol[pos].suma) {
      int l = min(quedan, arbol[arbol[pos].izq].suma), act;
      for (int i = 0; i <= l; i++) {
        act = Mayor(arbol[pos].izq, i, arbol, f) +
              Mayor(arbol[pos].der, quedan - i, arbol, f);
        if (act > n) n = act;
      }
    }
  }
  return DPM[pos][quedan] = max(p, n);
}
int main() {
  string S, aux = "";
  int P, M;
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cin >> S;
  if (S.size() == 1) {
    cout << S << '\n';
    return 0;
  }
  cin >> P >> M;
  for (int i = 1; i < S.size() - 1; i++) aux += S[i];
  S = aux;
  vector<nodo> arbol(1, nodo(-1));
  int pos = 0;
  Construye(S, arbol, 0, pos);
  DPm = vector<vector<int> >(arbol.size(), vector<int>(min(P, M) + 1, INF * 2));
  DPM = vector<vector<int> >(arbol.size(), vector<int>(min(P, M) + 1, INF * 2));
  cout << Mayor(0, min(P, M), arbol, P < M) << '\n';
  return 0;
}
