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
a = ['[', '{', '<', '(']
b = [']', '}', '>', ')']
k = 0
mas = []
def f(x, y, k):
    k = 0
    for i in range(x + 1, len(s)):
        if i in mas:
            continue
        if s[i] == a[0]:
            mas.append(i)
            k += f(i, 0, k)
        elif s[i] == a[1]:
            mas.append(i)
            k += f(i, 1, k)
        elif s[i] == a[2]:
            mas.append(i)
            k += f(i, 2, k)
        elif s[i] == a[3]:
            mas.append(i)
            k += f(i, 3, k)
        elif s[i] != b[y]:
            k += 1
            s[i] = b[ y]
            mas.append(i)
            return k
        else:
            mas.append(i)
            return k

s = list(input())
s1 = s.count('{') + s.count('[') + s.count('(') + s.count('<')
s2 = s.count('}') + s.count(']') + s.count(')') + s.count('>')
if s1 != s2:
    print('Impossible')
    exit(0)
elif s[0] in b or s[len(s)-1] in a:
    print('Impossible')
    exit(0)
for i in range(len(s)):
    if i in mas:
        continue
    if s[i] == a[0]:
        k += f(i, 0, k)
    elif s[i] == a[1]:
        k += f(i, 1, k)
    elif s[i] == a[2]:
        k += f(i, 2, k)
    else:
        k += f(i, 3, k)

print(k)