Dial Lock Key (hard)

2 secs 1024 MB
programgmg2's icon programgmg2

問題文(sample)

Yさんは NN 桁のダイヤルロック錠を開錠しようとしている。現在ダイヤルロック錠は 000..000000..00000NN 桁並んだ状態になっており、この状態からダイヤルを回して SS の状態にすることでロックを開錠することができる。ダイヤルは各桁ごとに0~9までの数字が書かれており、一回の操作においてYさんは NN 桁のうち連続した1桁以上のダイヤルについて、その数字を+1または-1することができる。ただし、ダイヤルの数字の0と9は繋がっているので0の状態から-1すると9に、9の状態から+1すると0になる。Yさんがロックを開錠するために必要な操作回数の最小値を求めよ。

制約

  • 1N181 \leq N \leq 18
  • S=N |S| = N
  • SSの各桁は00 ~ 99のいずれかの数字

入力

N
S

出力

Yさんがロックを開錠するために必要な操作回数の最小値を一行に出力せよ。

サンプル

入力1
3
111
出力1
1

ダイヤルの全ての桁について、+1するという1回の操作によって開錠することができます。これよりも少ない操作回数で開錠することはできないので、1と出力します。

入力2
5
00000
出力2
0

操作を行わなくても開錠されていることもあります。

入力3
4
5231
出力3
6

最小の操作の手順の例は以下の通りです。

(0000)111122212231323142315231(0000) \rightarrow 1111 \rightarrow 2221 \rightarrow 2231 \rightarrow 3231 \rightarrow 4231 \rightarrow 5231

提出


Go (1.21)