//#pragma GCC optimize("O3", "unroll-loops")
//#pragma GCC target("avx2", "bmi", "bmi2", "lzcnt", "popcnt")
#include <bits/stdc++.h>
#define ldb long double
//#define double ldb
#define db double
#define unomap unordered_map
#define unoset unordered_set
#define endl '\n'
#define str string
#define strstr stringstream
#define sz(a) (int)a.size()
#define ll long long
//#define int ll
#define pii pair <int, int>
#define pll pair <ll, ll>
#define Unique(a) a.resize(unique(all(a)) - a.begin())
#define ull unsigned ll
#define fir first
#define sec second
#define idc cin.ignore()
#define lb lower_bound
#define ub upper_bound
#define all(s) s.begin(), s.end()
#define rev reverse
#define sigma ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
#define skibidi int main
#define rizz signed main
#define gcd __gcd
#define pushb push_back
#define popb pop_back
#define pushf push_front
#define popf pop_front
#define mul2x(a, x) a << x
#define div2x(a, x) a >> x
#define lcm(a, b) (a / __gcd(a, b) * b)
#define log_base(x, base) log(x) / log(base)
#define debug clog << "No errors!"; exit(0);
#define forw(i, a, b) for (int i = a; i <= b; ++i)
#define forw2(i, a, b) for (ll i = a; i <= b; ++i)
#define fors(i, a, b) for (int i = a; i >= b; --i)
#define fors2(i, a, b) for (ll i = a; i >= b; --i)
#define pqueue priority_queue
#define sqrt sqrtl
#define popcount __builtin_popcountll
#define want_digit(x) cout << fixed << setprecision(x);
#define excuting_time 1000.0 * clock() / CLOCKS_PER_SEC
using namespace std;
const int MOD = 1e9 + 7; // 998244353
const int inf = 1e9;
const ll INF = 1e18;
const int N = 100;
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
ll random(const ll &L, const ll &R)
{
return uniform_int_distribution<ll> (L, R) (rng);
}
str add(str a, str b)
{
str c;
int re = 0, digit;
rev(all(a));
rev(all(b));
while (sz(a) < sz(b)) a += '0';
while (sz(b) < sz(a)) b += '0';
forw (i, 0, sz(a) - 1)
{
digit = (a[i] - '0') + (b[i] - '0') + re;
re = digit / 10;
digit %= 10;
c += char(digit + '0');
}
if (re) c += '1';
rev(all(c));
return c;
}
str sub(str a, str b)
{
str c;
int re = 0, digit;
rev(all(a)); rev(all(b));
while (sz(b) < sz(a)) b += '0';
forw (i, 0, sz(a) - 1)
{
digit = (a[i] - '0') - (b[i] - '0') - re;
re = (digit < 0);
digit = (digit + 10) % 10;
c += char(digit + '0');
}
while (sz(c) > 1 && c.back() == '0') c.popb();
rev(all(c));
return c;
}
bool compare(str a, str b)
{
if (sz(a) > sz(b)) return true;
if (sz(a) < sz(b)) return false;
return (a >= b);
}
int n, k;
str s, res, dp[N + 5][N / 2 + 5][N / 2 + 5], curr, ans, t;
str f(int pos, int open, int depth)
{
if (open < 0 || open > n - pos || depth > k) return "0";
if (pos == n) return (!open && depth == k) ? "1" : "0";
str &X = dp[pos][open][depth];
if (X != "-1") return X;
X = add(f(pos + 1, open + 1, max(depth, open + 1)), f(pos + 1, open - 1, depth));
return X;
}
void cook()
{
cin >> n >> k >> s >> t;
forw (i, 1, n) forw (j, 0, n / 2) forw (p, 0, n / 2)
dp[i][j][p] = "-1";
int open = 0, depth = 0;
forw (pos, 0, n - 1)
{
if (s[pos] == '(')
depth = max(depth, ++open);
else
{
ans = add(ans, f(pos + 1, open + 1, max(depth, open + 1)));
--open;
}
}
cout << add(ans, "1") << endl;
open = 0; depth = 0;
forw (pos, 0, n - 1)
{
curr = f(pos + 1, open + 1, max(depth, open + 1));
if (compare(curr, t))
{
res += '(';
depth = max(depth, ++open);
}
else
{
t = sub(t, curr);
res += ')';
--open;
}
if (open < 0)
{
cout << "-1\n";
return;
}
}
cout << res << endl;
}
skibidi()
//rizz()
{
srand(time(NULL));
sigma;
#define name "test"
/*
if (fopen(name".INP", "r"))
{
freopen(name".INP", "r", stdin);
freopen(name".OUT", "w", stdout);
}
*/
int numTest = 1;
// cin >> numTest;
while (numTest--)
{
cook();
}
return 0;
}
Ly8jcHJhZ21hIEdDQyBvcHRpbWl6ZSgiTzMiLCAidW5yb2xsLWxvb3BzIikKLy8jcHJhZ21hIEdDQyB0YXJnZXQoImF2eDIiLCAiYm1pIiwgImJtaTIiLCAibHpjbnQiLCAicG9wY250IikKCiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgojZGVmaW5lIGxkYiBsb25nIGRvdWJsZQovLyNkZWZpbmUgZG91YmxlIGxkYgojZGVmaW5lIGRiIGRvdWJsZQojZGVmaW5lIHVub21hcCB1bm9yZGVyZWRfbWFwCiNkZWZpbmUgdW5vc2V0IHVub3JkZXJlZF9zZXQKI2RlZmluZSBlbmRsICdcbicKI2RlZmluZSBzdHIgc3RyaW5nCiNkZWZpbmUgc3Ryc3RyIHN0cmluZ3N0cmVhbQojZGVmaW5lIHN6KGEpIChpbnQpYS5zaXplKCkKI2RlZmluZSBsbCBsb25nIGxvbmcKLy8jZGVmaW5lIGludCBsbAojZGVmaW5lIHBpaSBwYWlyIDxpbnQsIGludD4KI2RlZmluZSBwbGwgcGFpciA8bGwsIGxsPgojZGVmaW5lIFVuaXF1ZShhKSBhLnJlc2l6ZSh1bmlxdWUoYWxsKGEpKSAtIGEuYmVnaW4oKSkKI2RlZmluZSB1bGwgdW5zaWduZWQgbGwKI2RlZmluZSBmaXIgZmlyc3QKI2RlZmluZSBzZWMgc2Vjb25kCiNkZWZpbmUgaWRjIGNpbi5pZ25vcmUoKQojZGVmaW5lIGxiIGxvd2VyX2JvdW5kCiNkZWZpbmUgdWIgdXBwZXJfYm91bmQKI2RlZmluZSBhbGwocykgcy5iZWdpbigpLCBzLmVuZCgpCiNkZWZpbmUgcmV2IHJldmVyc2UKI2RlZmluZSBzaWdtYSBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApLCBjaW4udGllKDApLCBjb3V0LnRpZSgwKTsKI2RlZmluZSBza2liaWRpIGludCBtYWluCiNkZWZpbmUgcml6eiBzaWduZWQgbWFpbgojZGVmaW5lIGdjZCBfX2djZAojZGVmaW5lIHB1c2hiIHB1c2hfYmFjawojZGVmaW5lIHBvcGIgcG9wX2JhY2sKI2RlZmluZSBwdXNoZiBwdXNoX2Zyb250CiNkZWZpbmUgcG9wZiBwb3BfZnJvbnQKI2RlZmluZSBtdWwyeChhLCB4KSBhIDw8IHgKI2RlZmluZSBkaXYyeChhLCB4KSBhID4+IHgKI2RlZmluZSBsY20oYSwgYikgKGEgLyBfX2djZChhLCBiKSAqIGIpCiNkZWZpbmUgbG9nX2Jhc2UoeCwgYmFzZSkgbG9nKHgpIC8gbG9nKGJhc2UpCiNkZWZpbmUgZGVidWcgY2xvZyA8PCAiTm8gZXJyb3JzISI7IGV4aXQoMCk7CiNkZWZpbmUgZm9ydyhpLCBhLCBiKSBmb3IgKGludCBpID0gYTsgaSA8PSBiOyArK2kpCiNkZWZpbmUgZm9ydzIoaSwgYSwgYikgZm9yIChsbCBpID0gYTsgaSA8PSBiOyArK2kpCiNkZWZpbmUgZm9ycyhpLCBhLCBiKSBmb3IgKGludCBpID0gYTsgaSA+PSBiOyAtLWkpCiNkZWZpbmUgZm9yczIoaSwgYSwgYikgZm9yIChsbCBpID0gYTsgaSA+PSBiOyAtLWkpCiNkZWZpbmUgcHF1ZXVlIHByaW9yaXR5X3F1ZXVlCiNkZWZpbmUgc3FydCBzcXJ0bAojZGVmaW5lIHBvcGNvdW50IF9fYnVpbHRpbl9wb3Bjb3VudGxsCiNkZWZpbmUgd2FudF9kaWdpdCh4KSBjb3V0IDw8IGZpeGVkIDw8IHNldHByZWNpc2lvbih4KTsKI2RlZmluZSBleGN1dGluZ190aW1lIDEwMDAuMCAqIGNsb2NrKCkgLyBDTE9DS1NfUEVSX1NFQwp1c2luZyBuYW1lc3BhY2Ugc3RkOwpjb25zdCBpbnQgTU9EID0gMWU5ICsgNzsgLy8gOTk4MjQ0MzUzCmNvbnN0IGludCBpbmYgPSAxZTk7CmNvbnN0IGxsIElORiA9IDFlMTg7CmNvbnN0IGludCBOID0gMTAwOwoKbXQxOTkzN182NCBybmcoY2hyb25vOjpzdGVhZHlfY2xvY2s6Om5vdygpLnRpbWVfc2luY2VfZXBvY2goKS5jb3VudCgpKTsKbGwgcmFuZG9tKGNvbnN0IGxsICZMLCBjb25zdCBsbCAmUikKewogICAgcmV0dXJuIHVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxsbD4gKEwsIFIpIChybmcpOwp9CgpzdHIgYWRkKHN0ciBhLCBzdHIgYikKewogICAgc3RyIGM7CiAgICBpbnQgcmUgPSAwLCBkaWdpdDsKICAgIHJldihhbGwoYSkpOwogICAgcmV2KGFsbChiKSk7CiAgICB3aGlsZSAoc3ooYSkgPCBzeihiKSkgYSArPSAnMCc7CiAgICB3aGlsZSAoc3ooYikgPCBzeihhKSkgYiArPSAnMCc7CgogICAgZm9ydyAoaSwgMCwgc3ooYSkgLSAxKQogICAgewogICAgICAgIGRpZ2l0ID0gKGFbaV0gLSAnMCcpICsgKGJbaV0gLSAnMCcpICsgcmU7CiAgICAgICAgcmUgPSBkaWdpdCAvIDEwOwogICAgICAgIGRpZ2l0ICU9IDEwOwogICAgICAgIGMgKz0gY2hhcihkaWdpdCArICcwJyk7CiAgICB9CiAgICBpZiAocmUpIGMgKz0gJzEnOwoKICAgIHJldihhbGwoYykpOwogICAgcmV0dXJuIGM7Cn0KCnN0ciBzdWIoc3RyIGEsIHN0ciBiKQp7CiAgICBzdHIgYzsKICAgIGludCByZSA9IDAsIGRpZ2l0OwogICAgcmV2KGFsbChhKSk7IHJldihhbGwoYikpOwogICAgd2hpbGUgKHN6KGIpIDwgc3ooYSkpIGIgKz0gJzAnOwogICAgZm9ydyAoaSwgMCwgc3ooYSkgLSAxKQogICAgewogICAgICAgIGRpZ2l0ID0gKGFbaV0gLSAnMCcpIC0gKGJbaV0gLSAnMCcpIC0gcmU7CiAgICAgICAgcmUgPSAoZGlnaXQgPCAwKTsKICAgICAgICBkaWdpdCA9IChkaWdpdCArIDEwKSAlIDEwOwogICAgICAgIGMgKz0gY2hhcihkaWdpdCArICcwJyk7CiAgICB9CgogICAgd2hpbGUgKHN6KGMpID4gMSAmJiBjLmJhY2soKSA9PSAnMCcpIGMucG9wYigpOwogICAgcmV2KGFsbChjKSk7CiAgICByZXR1cm4gYzsKfQoKYm9vbCBjb21wYXJlKHN0ciBhLCBzdHIgYikKewogICAgaWYgKHN6KGEpID4gc3ooYikpIHJldHVybiB0cnVlOwogICAgaWYgKHN6KGEpIDwgc3ooYikpIHJldHVybiBmYWxzZTsKICAgIHJldHVybiAoYSA+PSBiKTsKfQoKaW50IG4sIGs7CnN0ciBzLCByZXMsIGRwW04gKyA1XVtOIC8gMiArIDVdW04gLyAyICsgNV0sIGN1cnIsIGFucywgdDsKCnN0ciBmKGludCBwb3MsIGludCBvcGVuLCBpbnQgZGVwdGgpCnsKICAgIGlmIChvcGVuIDwgMCB8fCBvcGVuID4gbiAtIHBvcyB8fCBkZXB0aCA+IGspIHJldHVybiAiMCI7CiAgICBpZiAocG9zID09IG4pIHJldHVybiAoIW9wZW4gJiYgZGVwdGggPT0gaykgPyAiMSIgOiAiMCI7CgogICAgc3RyICZYID0gZHBbcG9zXVtvcGVuXVtkZXB0aF07CiAgICBpZiAoWCAhPSAiLTEiKSByZXR1cm4gWDsKCiAgICBYID0gYWRkKGYocG9zICsgMSwgb3BlbiArIDEsIG1heChkZXB0aCwgb3BlbiArIDEpKSwgZihwb3MgKyAxLCBvcGVuIC0gMSwgZGVwdGgpKTsKICAgIHJldHVybiBYOwp9Cgp2b2lkIGNvb2soKQp7CiAgICBjaW4gPj4gbiA+PiBrID4+IHMgPj4gdDsKICAgIGZvcncgKGksIDEsIG4pIGZvcncgKGosIDAsIG4gLyAyKSBmb3J3IChwLCAwLCBuIC8gMikKICAgICAgICBkcFtpXVtqXVtwXSA9ICItMSI7CgogICAgaW50IG9wZW4gPSAwLCBkZXB0aCA9IDA7CiAgICBmb3J3IChwb3MsIDAsIG4gLSAxKQogICAgewogICAgICAgIGlmIChzW3Bvc10gPT0gJygnKQogICAgICAgICAgICBkZXB0aCA9IG1heChkZXB0aCwgKytvcGVuKTsKICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgICBhbnMgPSBhZGQoYW5zLCBmKHBvcyArIDEsIG9wZW4gKyAxLCBtYXgoZGVwdGgsIG9wZW4gKyAxKSkpOwogICAgICAgICAgICAtLW9wZW47CiAgICAgICAgfQogICAgfQogICAgY291dCA8PCBhZGQoYW5zLCAiMSIpIDw8IGVuZGw7CgogICAgb3BlbiA9IDA7IGRlcHRoID0gMDsKICAgIGZvcncgKHBvcywgMCwgbiAtIDEpCiAgICB7CiAgICAgICAgY3VyciA9IGYocG9zICsgMSwgb3BlbiArIDEsIG1heChkZXB0aCwgb3BlbiArIDEpKTsKICAgICAgICBpZiAoY29tcGFyZShjdXJyLCB0KSkKICAgICAgICB7CiAgICAgICAgICAgIHJlcyArPSAnKCc7CiAgICAgICAgICAgIGRlcHRoID0gbWF4KGRlcHRoLCArK29wZW4pOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgICB0ID0gc3ViKHQsIGN1cnIpOwogICAgICAgICAgICByZXMgKz0gJyknOwogICAgICAgICAgICAtLW9wZW47CiAgICAgICAgfQoKICAgICAgICBpZiAob3BlbiA8IDApCiAgICAgICAgewogICAgICAgICAgICBjb3V0IDw8ICItMVxuIjsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KICAgIGNvdXQgPDwgcmVzIDw8IGVuZGw7Cn0KCnNraWJpZGkoKQovL3JpenooKQp7CiAgICBzcmFuZCh0aW1lKE5VTEwpKTsKICAgIHNpZ21hOwogICAgI2RlZmluZSBuYW1lICJ0ZXN0IgogICAgLyoKICAgIGlmIChmb3BlbihuYW1lIi5JTlAiLCAiciIpKQogICAgewogICAgICAgIGZyZW9wZW4obmFtZSIuSU5QIiwgInIiLCBzdGRpbik7CiAgICAgICAgZnJlb3BlbihuYW1lIi5PVVQiLCAidyIsIHN0ZG91dCk7CiAgICB9CiAgICAqLwogICAgaW50IG51bVRlc3QgPSAxOwovLyAgICBjaW4gPj4gbnVtVGVzdDsKICAgIHdoaWxlIChudW1UZXN0LS0pCiAgICB7CiAgICAgICAgY29vaygpOwogICAgfQogICAgcmV0dXJuIDA7Cn0K