You are given string *s* consists of opening and closing brackets of four kinds &lt;&gt;, {}, [], (). There are two types of brackets: opening and closing. You can replace any bracket by another of the same type. For example, you can replace &lt; by the bracket {, but you can't replace it by ) or &gt;.

The following definition of a regular bracket sequence is well-known, so you can be familiar with it.

Let's define a regular bracket sequence (RBS). Empty string is RBS. Let *s*<sub class="lower-index">1</sub> and *s*<sub class="lower-index">2</sub> be a RBS then the strings &lt;*s*<sub class="lower-index">1</sub>&gt;*s*<sub class="lower-index">2</sub>, {*s*<sub class="lower-index">1</sub>}*s*<sub class="lower-index">2</sub>, [*s*<sub class="lower-index">1</sub>]*s*<sub class="lower-index">2</sub>, (*s*<sub class="lower-index">1</sub>)*s*<sub class="lower-index">2</sub> are also RBS.

For example the string "[[(){}]&lt;&gt;]" is RBS, but the strings "[)()" and "][()()" are not.

Determine the least number of replaces to make the string *s* RBS.
The only line contains a non empty string *s*, consisting of only opening and closing brackets of four kinds. The length of *s* does not exceed 10<sup class="upper-index">6</sup>.
none
[<}){}
2
{()}[]
0
]]
Impossible
>
Impossible
{}
0
{}
0
{]
1
{]
1
{]
1
[]{[]({)([
Impossible
(([{>}{[{[)]]>>]
7
((<>)[]<]><]
3
[[([[(>]>)))[<)>
6
({)[}<)](}
5
(}{)[<][)(]}
6
>}({>]{[}<{<{{)[]]{)]>]]]<(][{)<<<{<<)>)()[>{<]]{}<>}}}}(>}<})(][>{((<{<)]}>)))][>[}[])<]){]]][<[)([
Impossible
<<[<{{<([({<<[)<>(]]){})>[](])[)))[[}>]<)>[[>{>>>[<]}<>>)[>]<{)<[><(<]][>(>]>][(<][{]}(()<[()[>><<])<]})]<]}{)
45
[<<{{((}[}<<)<)>})(][{>}})((>)<[)[>}[})[)>()[()[((}<<(>)<>](<>(}[>})[[[{)<}<<(}{>>}[<([[])<><)]<{>}[>>>{({>)}]})>)
42
(<[([(<({>(}{]>[(})])}])()<<}{]{[>]>(>>[(>>}[){(}<[{(()]{{<(<{][[{<><{<{)<>>]}}}{)(}{})}[<))>>}((({>){({}{{]}]>>}})>))
43
{(]}<([]<]{>]<{<({{{<>))}[({(}{)[}({>]}}<<)}<]))(<>(>{>{{{)<}({<]<>{)(>[)>{({}<([<[[)]><>{]}}(>]{}<)[})]}]]}]}>}
40
<(([)]<[}>{)>][[(<()({{{>>((]<}<{{<>}><<[)}[[)([[)[)}<]<{(<>){([)><{[([[][({])})<][(}]}>>[){)[({>){(}[}})>}>]>)]}))})>}]
45
)(
Impossible
[[[[[[[[
Impossible
try:
    s=input()
    p=s
    p='M'+p
    def io(x):
        x='M'+x
        while '()' in x:
            x=x.replace('()','')
        if len(x)==1:
            return True
        else:
            return False
    while '()' in p or '{}' in p or '<>' in p or '[]' in p:
        if '()' in p:
            p=p.replace('()','')
        if '[]' in p:
            p=p.replace('[]','')
        if '<>' in p:
            p=p.replace('<>','')
        if '{}' in p:
            p=p.replace('{}','')
    if len(p)==1:
        print(0)
    elif len(p)==len(s)+1:
        print('Impossible')
    else:
        p=p.replace('M','')
        if len(p)%2==1:
            print("Impossible")
        else:
            p=list(p)
            a=p.count('[')
            a1=p.count(']')
            b=p.count('(')
            b1=p.count(')')
            c=p.count('{')
            c1=p.count('}')
            d=p.count("<")
            d1=p.count(">")
            if (a+b+c+d)!=a1+b1+c1+d1:
                print("Impossible")
            else:
                p=''.join(p)
                t=p
                if '[' in p:
                    p=p.replace('[','(')
                if '<' in p:
                    p=p.replace('<','(')
                if '{' in p:
                    p=p.replace('{','(')
                if ']' in p:
                    p=p.replace(']',')')
                if '>' in p:
                    p=p.replace('>',')')
                if '}' in p:
                    p=p.replace('}',')')

                    
                if io(p)==True:
                    
                    op0=abs(a-a1)
                    op1=abs(b-b1)
                    op2=abs(c-c1)
                    op3=abs(d-d1)
                    lo=[op0,op1,op2,op3]
                   
                    lp=max(lo)
                    lo.remove(lp)
                   
                    print(sum(lo)-lp)
                else:
                    print("Impossible")
                    
            
        
    
except:
    pass