CF612C Replace To Make Regular Bracket Sequence
Description
You are given string $ s $ consists of opening and closing brackets of four kinds , {}, \[\], (). 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 < by the bracket {, but you can't replace it by ) or >.
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_{1} $ and $ s_{2} $ be a RBS then the strings < $ s_{1} $ > $ s_{2} $ , { $ s_{1} $ } $ s_{2} $ , \[ $ s_{1} $ \] $ s_{2} $ , ( $ s_{1} $ ) $ s_{2} $ are also RBS.
For example the string "\[\[(){}\]\]" is RBS, but the strings "\[)()" and "\]\[()()" are not.
Determine the least number of replaces to make the string $ s $ RBS.
Input Format
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^{6} $ .
Output Format
If it's impossible to get RBS from $ s $ print Impossible.
Otherwise print the least number of replaces needed to get RBS from $ s $ .