#include <bits/stdc++.h>
using namespace std;
int n;
char s[10005];
int L[10005], R[10005], f[10005];
int P, M;
int dp[105][10005][2];
void dfs1(int now) {
  if (L[now] == 0) {
    for (int i = 1; i <= M; i++) {
      dp[i][now][0] = 1e7;
      dp[i][now][1] = -1e7;
    }
    return;
  }
  dfs1(L[now]);
  dfs1(R[now]);
  for (int i = 0; i <= M; i++) {
    dp[i][now][0] = 1e7;
    dp[i][now][1] = -1e7;
  }
  for (int i = 0; i <= M; i++) {
    for (int j = 0; j + i <= M; j++) {
      if (dp[i][L[now]][0] != 1e7 && dp[j][R[now]][0] != 1e7)
        dp[i + j][now][0] =
            min(dp[i + j][now][0], dp[i][L[now]][0] + dp[j][R[now]][0]);
      if (dp[i][L[now]][1] != -1e7 && dp[j][R[now]][1] != -1e7)
        dp[i + j][now][1] =
            max(dp[i + j][now][1], dp[i][L[now]][1] + dp[j][R[now]][1]);
    }
  }
  for (int i = 0; i <= M; i++) {
    for (int j = 0; j + i + 1 <= M; j++) {
      if (dp[i][L[now]][0] != 1e7 && dp[j][R[now]][1] != -1e7)
        dp[i + j + 1][now][0] =
            min(dp[i + j + 1][now][0], dp[i][L[now]][0] - dp[j][R[now]][1]);
      if (dp[i][L[now]][1] != -1e7 && dp[j][R[now]][0] != 1e7)
        dp[i + j + 1][now][1] =
            max(dp[i + j + 1][now][1], dp[i][L[now]][1] - dp[j][R[now]][0]);
    }
  }
  for (int i = 0; i <= M; i++) {
  }
}
void dfs2(int now) {
  if (L[now] == 0) {
    for (int i = 1; i <= P; i++) {
      dp[i][now][0] = 1e7;
      dp[i][now][1] = -1e7;
    }
    return;
  }
  dfs2(L[now]);
  dfs2(R[now]);
  for (int i = 0; i <= P; i++) {
    dp[i][now][0] = 1e7;
    dp[i][now][1] = -1e7;
  }
  for (int i = 0; i <= P; i++) {
    for (int j = 0; j + i <= P; j++) {
      if (dp[i][L[now]][0] != 1e7 && dp[j][R[now]][1] != -1e7)
        dp[i + j][now][0] =
            min(dp[i + j][now][0], dp[i][L[now]][0] - dp[j][R[now]][1]);
      if (dp[i][L[now]][1] != -1e7 && dp[j][R[now]][0] != 1e7)
        dp[i + j][now][1] =
            max(dp[i + j][now][1], dp[i][L[now]][1] - dp[j][R[now]][0]);
    }
  }
  for (int i = 0; i <= P; i++) {
    for (int j = 0; j + i + 1 <= P; j++) {
      if (dp[i][L[now]][0] != 1e7 && dp[j][R[now]][0] != 1e7)
        dp[i + j + 1][now][0] =
            min(dp[i + j + 1][now][0], dp[i][L[now]][0] + dp[j][R[now]][0]);
      if (dp[i][L[now]][1] != -1e7 && dp[j][R[now]][1] != -1e7)
        dp[i + j + 1][now][1] =
            max(dp[i + j + 1][now][1], dp[i][L[now]][1] + dp[j][R[now]][1]);
    }
  }
  for (int i = 0; i <= P; i++) {
  }
}
int main() {
  scanf("%s", s);
  scanf("%d%d", &P, &M);
  int len = strlen(s);
  n = 1;
  int now = 1;
  for (int i = 0; i < len; i++) {
    if (s[i] == '(') {
      L[now] = ++n;
      f[n] = now;
      now = n;
    } else if (s[i] == '?') {
      now = f[now];
      R[now] = ++n;
      f[n] = now;
      now = n;
    } else if (s[i] == ')')
      now = f[now];
    else
      dp[0][now][0] = dp[0][now][1] = s[i] - '0';
  }
  if (P > M) {
    dfs1(1);
    printf("%d", dp[M][1][1]);
  } else {
    dfs2(1);
    printf("%d", dp[P][1][1]);
  }
  return 0;
}
