#include<iostream>
#include<cstring>
using namespace std;
int A[2][1000],G[2][1000][2];
string s,t;
int root;
int f(string s,int flag)
{
	int nowroot=root++;
	int i=0,cnt=0;
	for(;i<s.size();i++)
	{
		if(s[i]=='(')cnt++;
		else if(s[i]==')')cnt--;
		if(!cnt)break;
	}
	G[flag][nowroot][0]=i>1?f(s.substr(1,i-1),flag):-1;
	int j=i+2;
	for(;s[i]!=']';i++);
	A[flag][nowroot]=stoi(s.substr(j,i-j));
	G[flag][nowroot][1]=i+4<s.size()?f(s.substr(i+2,s.size()-i-3),flag):-1;
	return nowroot;
}
string solve(int a,int b)
{
	string ans="["+to_string(A[0][a]+A[1][b])+"]";
	ans="("+(G[0][a][0]>=0&&G[1][b][0]>=0?solve(G[0][a][0],G[1][b][0]):"")+")"+ans;
	ans+="("+(G[0][a][1]>=0&&G[1][b][1]>=0?solve(G[0][a][1],G[1][b][1]):"")+")";
	return ans;
}
int main()
{
	cin>>s>>t;
	int aroot=f(s,0);
	root=0;
	int broot=f(t,1);
	cout<<solve(aroot,broot)<<endl;
}

