00以上NN以下の全てのiiについて,ii文字目以前の文字を全て英小文字にし,i+1i+1文字目以降の文字を全て数字にするために必要な操作回数を求め,その最小値を求めればよいです.

愚直な実装ではO(N2)\mathrm{O}(N^2)かかりますが,累積和を利用することで高速に求めることができます.

まず,00以上NN以下の全てのiiについて,以下を求めます.

  • ii文字目までに含まれる数字の個数AiA_i

これはO(N)\mathrm{O}(N)で求まります.

この配列AAをあらかじめ用意しておくことで,「ii文字目以前の文字を全て英小文字にし,i+1i+1文字目以降の文字を全て数字にするために必要な操作回数」は,以下の式でO(1)\mathrm{O}(1)で求めることができます.

Ai+((Ni)(ANAi))=NiAN+2AiA_i + ((N - i) - (A_N - A_i)) = N - i - A_N + 2A_i

よって,これを00以上NN以下の全てのiiについて求め,その最小値を求めればよいので,全体でO(N)\mathrm{O}(N)で答えを求めることができます.