from collections import defaultdict N = int(input()) if N % 2 != 0: print(-1) exit() S = input() R, M = map(int, input().split()) accum = [0] + [1 if s == "(" else -1 for s in S] * 2 for i in range(2 * N): accum[i + 1] += accum[i] count = defaultdict(int) range_min = 0 for i in range(N): count[accum[i]] += 1 range_min = min(range_min, accum[i]) ans = float("inf") for i in range(N): rotation_cost = (N - i) % N * R accum_left = accum[i] accum_right = accum[i + N] close_to_open_required = (accum_left - range_min + 1) // 2 open_to_close_required = (accum_right - range_min + 1) // 2 modification_cost = (close_to_open_required + open_to_close_required) * M ans = min(ans, rotation_cost + modification_cost) print(ans)