import re li=raw_input() ans=[] def Or(a): ans=[] ans+=a.split("|") return [ans] def hate(a): ans=[""] if type(a)==type(""): ans+=a else: ans+=a return [ans] def chars(a): return [a[i] for i in range(len(a))] last="" le=len(li) i=0 c="" hatef=0 while i0):ans+=last if c=='(': matc=re.search('\(([^)]+)\)',li[i:]).group(1) i+=len(matc)+2 last=Or(matc) elif c=='[': matc=re.search('\[([^\]]+)\]',li[i:]).group(1) i+=len(matc)+2 last=[chars(matc)] else: last=c i+=1 if hatef==0:ans+=last def put(an,a,l,n): if l==n: print an else: if type(a[n])==type(""): an+=a[n] put(an,a,l,n+1) else: for i in a[n]: if type(i)==type(""): put(an+i,a,l,n+1) elif type(i)==type([]): for j in i:put( an+j,a,l,n+1) put("",ans,len(ans),0)