Mua bàn phím

Đề bài

Mô tả

Bạn có một mật khẩu là xâu s độ dài n, mỗi ký tự là một trong m chữ cái thường đầu tiên của bảng chữ cái Latin.

Bạn muốn mua một bàn phím mới. Một bàn phím là một hoán vị của m chữ cái đầu tiên — tức là mỗi chữ cái xuất hiện đúng một lần ở một vị trí từ 1 đến m.

Bạn gõ mật khẩu bằng một ngón tay. Chi phí di chuyển ngón tay từ ký tự si sang ký tự si+1 bằng khoảng cách giữa hai vị trí của chúng trên bàn phím. Tổng chi phí gõ toàn bộ mật khẩu được gọi là độ chậm của bàn phím:

slowness=∑i=2n|possi−1−possi|,

trong đó posx là vị trí của chữ cái x trên bàn phím.

Hãy tìm giá trị nhỏ nhất có thể của độ chậm khi chọn bàn phím thích hợp.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên n và m (1≤n≤105, 1≤m≤20).
  • Dòng thứ hai chứa xâu s độ dài n gồm các chữ cái thường thuộc m chữ cái đầu tiên.

Dữ liệu ra

In ra một số nguyên — độ chậm nhỏ nhất.

Ràng buộc

  • 1≤n≤105
  • 1≤m≤20

Ví dụ

Input Output Giải thích
6 3
aacabc
5 Chọn bàn phím bac (vị trí b=1, a=2, c=3): chi phí ‖2−2‖+‖2−3‖+‖3−2‖+‖2−1‖+‖1−3‖=5.
6 4
aaaaaa
0 Mọi ký tự liền kề đều giống nhau nên chi phí luôn bằng 0 với mọi bàn phím.
15 4
abacabadabacaba
16 Một bàn phím tối ưu là bacd.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0