#895. KEYBOARD - Bàn phím

Bộ nhớ: 256 MiB Thời gian: 1000 ms Nhập/xuất từ luồng chuẩn
Kiểu bài: Thông thường Kiểu chấm: So sánh văn bản
Đưa lên bởi: Trùm CUỐI

Đề bài

Sau khi đi du lịch từ thành phố Alpha về, Steve vẫn còn dư tiền thưởng và quyết định đi mua bàn phím mới để phục vụ cho công việc gõ mật khẩu. Mật khẩu là một xâu 𝑠 có độ dài là 𝑛 . Mỗi kí tự của xâu này là một trong 𝑚 kí tự đầu tiên trong bảng chữ cái Latin in thường. Bàn phím thế hệ mới là một hoán vị của 𝑚 chữ cái Latin in thường đầu tiên được xếp theo một hàng ngang từ trái sang phải.

Ví dụ, nếu 𝑚 = 3 thì có 6 bàn phím khác nhau là: 𝑎𝑏𝑐, 𝑎𝑐𝑏, 𝑏𝑎𝑐, 𝑏𝑐𝑎, 𝑐𝑎𝑏𝑐𝑏𝑎. Vì Steve chỉ gõ mật khẩu với một ngón tay nên cần thời gian để di chuyển từ một kí tự trong mật khẩu sang kí tự tiếp nối nó. Thời gian Steve dùng để di chuyển từ kí tự 𝑠_𝑖 sang kí tự 𝑠_{𝑖+1} bằng với khoảng cách của hai kí tự này trên bàn phím. Thời gian tổng cộng mà Steve cần để gõ mật khẩu s với một bàn phím nhất định thì được gọi là độ chậm của bàn phím đó. Steve muốn mua bàn phím có độ chậm nhỏ nhất.

Định nghĩa cụ thể hơn, độ chậm của một bàn phím thì bằng

∑_{i=2}^n |𝑝𝑜𝑠(𝑠_{𝑖−1}) − 𝑝𝑜𝑠(𝑠_𝑖)|

Với 𝑝𝑜𝑠(𝑥) là vị trí của kí tự 𝑥 trên bàn phím.

Ví dụ, nếu 𝑠 𝑎𝑎𝑐𝑎𝑏𝑐 và bàn phím là 𝑏𝑎𝑐, thì tổng thời gian để gõ mật khẩu là: |𝑝𝑜𝑠(𝑎) − 𝑝𝑜𝑠(𝑎)| + |𝑝𝑜𝑠(𝑎) − 𝑝𝑜𝑠(𝑐)| + |𝑝𝑜𝑠(𝑐) − 𝑝𝑜𝑠(𝑎)| + |𝑝𝑜𝑠(𝑎) − 𝑝𝑜𝑠(𝑏)| + |𝑝𝑜𝑠(𝑏) − 𝑝𝑜𝑠(𝑐)| = |2 − 2| + |2 − 3| + |3 − 2| + |2 − 1| + |1 − 3| = 0 + 1 + 1 + 1 + 2 = 5

Yêu cầu: Cho trước xâu kí tự s là mật khẩu Steve hay phải gõ, hãy giúp Steve chọn mua bàn phím có độ chậm nhỏ nhất.

Dữ liệu:

  • Dòng đầu tiên chứa hai số nguyên dương 𝑛, 𝑚\ (1 ≤ 𝑛 ≤ 10^5; 1 ≤ 𝑚 ≤ 20) ;
  • Dòng thứ hai chứa một xâu 𝑠 𝑛 kí tự. Mỗi kí tự là một trong 𝑚 chữ cái Latin đầu tiên (in thường).

Kết quả:

  • Đưa ra một số nguyên là độ chậm nhỏ nhất mà một bàn phím có thể có.

Ví dụ:

Dữ liệu:

6 3
aacabc

Kết quả:

5

Dữ liệu:

15 4
abacabadabacaba

Kết quả:

16

Giải thích:

  • Ví dụ đầu tiên được xem xét trong đề bài.
  • Trong ví dụ thứ hai, bàn phím tốt nhất là 𝑏𝑎𝑐𝑑.

Giới hạn:

  • Subtask \#1: 10\% số điểm có 0 < m ≤ 2 ;
  • Subtask \#2: 50\% số điểm có 2 < m ≤ 10 ;
  • Subtask \#3: 40\% số điểm có 10 < m ≤ 20 .