#include <bits/stdc++.h>
using namespace std;
const long long INF = 1e18;
struct par {
  long long i, j, bal;
};
int32_t main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  map<char, long long> key = {{'(', 1}, {')', -1}};
  string s, t;
  cin >> s >> t;
  long long n = (long long)s.size(), m = (long long)t.size();
  vector<vector<vector<long long>>> dp(
      n + 1, vector<vector<long long>>(m + 1, vector<long long>(205, INF)));
  vector<vector<vector<par>>> p(n + 1,
                                vector<vector<par>>(m + 1, vector<par>(205)));
  dp[0][0][0] = 0;
  for (long long i = 0; i <= n; ++i)
    for (long long j = 0; j <= m; ++j)
      for (long long bal = 0; bal <= 200; ++bal) {
        if (dp[i][j][bal] == INF) continue;
        if (bal != 0) {
          long long ni = i, nj = j, nbal = bal - 1;
          if (i < n && s[i] == ')') ni++;
          if (j < m && t[j] == ')') nj++;
          if (dp[ni][nj][nbal] > dp[i][j][bal] + 1) {
            dp[ni][nj][nbal] = dp[i][j][bal] + 1;
            p[ni][nj][nbal] = {i, j, bal};
          }
        }
        if (bal != 200) {
          long long ni = i, nj = j, nbal = bal + 1;
          if (i < n && s[i] == '(') ni++;
          if (j < m && t[j] == '(') nj++;
          if (dp[ni][nj][nbal] > dp[i][j][bal] + 1) {
            dp[ni][nj][nbal] = dp[i][j][bal] + 1;
            p[ni][nj][nbal] = {i, j, bal};
          }
        }
      }
  for (long long bal = 1; bal <= 200; ++bal) {
    if (dp[n][m][0] > dp[n][m][bal] + bal) {
      dp[n][m][0] = dp[n][m][bal] + bal;
      p[n][m][0] = {n, m, bal};
    }
  }
  long long ti = n, tj = m, tbal = 0;
  string ans;
  while (ti != 0 || tj != 0 || tbal != 0) {
    auto tp = p[ti][tj][tbal];
    ti = tp.i;
    tj = tp.j;
    for (long long i = 0; i < (tbal - tp.bal); ++i) ans += '(';
    for (long long i = 0; i < (tp.bal - tbal); ++i) ans += ')';
    tbal = tp.bal;
  }
  reverse(ans.begin(), ans.end());
  cout << ans;
  return 0;
}
