Bàn phím chậm chạp

Xem dạng PDF

Gửi bài giải

Điểm: 1,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Kotlin, Pascal, PyPy, Python, Scratch

Bạn có một mật khẩu mà bạn thường xuyên gõ – một chuỗi s có độ dài n.
Mỗi ký tự của chuỗi này là một trong m chữ cái Latin thường đầu tiên.

Vì bạn gõ mật khẩu quá nhiều, 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 Latin đầu tiên.
Ví dụ, nếu m = 3, có 6 bàn phím khả thi: abc, acb, bac, bca, cab, cba.

Bạn gõ mật khẩu bằng một ngón tay, nên phải di chuyển ngón tay giữa các ký tự liên tiếp.
Thời gian di chuyển từ ký tự s_i sang s_{i+1} chính là khoảng cách giữa hai ký tự này trên bàn phím.

Tổng thời gian gõ mật khẩu trên một bàn phím được gọi là độ chậm của bàn phím đó.


Công thức

Độ chậm được tính như sau:

Độ chậm = tổng | pos(s[i-1]) - pos(s[i]) | với i = 2...n

Trong đó posₓ là vị trí (thứ tự) của chữ cái x trên bàn phím.


Ví dụ

Nếu s = aacabc và bàn phím là bac, ta có:

b đứng ở vị trí 1

a đứng ở vị trí 2

c đứng ở vị trí 3

=> pos[a] = 2, pos[b] = 1, pos[c] = 3

Tính độ chậm:

[ | pos[a]-pos[a] | + | pos[a]-pos[c] | + | pos[c]-pos[a] | + | pos[a]-pos[b] | + | pos[b]-pos[c] | \ = |2-2| + |2-3| + |3-2| + |2-1| + |1-3| = 0 + 1 + 1 + 1 + 2 = 5 ]


Trước khi mua bàn phím, bạn muốn biết độ chậm tối thiểu có thể đạt được.


Input
  • Dòng 1: Hai số nguyên nm (1 ≤ n ≤ 10^5, 1 ≤ m ≤ 20).
  • Dòng 2: Chuỗi s dài n, gồm các ký tự trong m chữ cái Latin thường đầu tiên.
Output
  • In ra một số nguyên duy nhấtđộ chậm tối thiểu mà một bàn phím có thể có.

Bình luận

Hãy đọc nội quy trước khi bình luận.


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