AT_jsc2021_e Level K Palindrome
Description
[problemUrl]: https://atcoder.jp/contests/jsc2021/tasks/jsc2021_e
高橋くんは、すぬけくんに日頃の感謝を込めてレベル $ K $ の回文を送ることにしました。レベル $ L $ の回文 ( $ L $ は $ 0 $ 以上の整数 ) は以下のように定義されます。
- 文字列 $ s $ の左右を反転させたものを $ \mathrm{rev}(s) $ と表す。
- 文字列 $ s $ は $ s\ =\ \mathrm{rev}(s) $ であるとき、回文という。
- 空文字列と回文でない文字列はレベル $ 0 $ の回文である。
- 任意の**空でない**レベル $ L\ -\ 1 $ の回文 $ t $ に対して、$ t,\ \mathrm{rev}(t) $ をこの順に繋げた文字列はレベル $ L $ の回文である。
- 任意のレベル $ L\ -\ 1 $ の回文 $ t $ と任意の文字 $ c $ に対して、$ t,\ c,\ \mathrm{rev}(t) $ をこの順に繋げた文字列はレベル $ L $ の回文である。
いま、高橋くんは文字列 $ S $ を持っています。
$ S $ から $ 1 $ 文字選んで別の英小文字に書き換えるということを $ 0 $ 回以上繰り返すことで、$ S $ をちょうどレベル $ K $ の回文にすることができるか判定してください。また、できる場合は、$ S $ がちょうどレベル $ K $ の回文になるまでに必要な最小の書き換え回数を求めてください。
Input Format
入力は以下の形式で標準入力から与えられる。
> $ K $ $ S $
Output Format
ちょうどレベル $ K $ の回文を作ることができる場合は、必要な最小の書き換え回数を出力せよ。
できない場合は、`impossible` と出力せよ。
Explanation/Hint
### 制約
- $ K $ は整数
- $ 0\