Sau khi tìm ra mật khẩu là một xâu \(S\) có \(N\) kí tự, An quyết định mua một bàn phím chuyên dụng để nhập mật khẩu này. Do mật khẩu chỉ dùng \(M\) chữ cái đầu tiên trong bảng chữ cái tiếng Anh nên bàn phím chỉ cần \(M\) phím tương ứng. Do sở thích nên An bố trí tất cả \(M\) phím lên cùng một hàng, ví dụ với \(M\) \(=\) \(3\), có \(6\) cách bố trí khác nhau là : \(abc\), \(acb\), \(bac\), \(bca\), \(cab\), \(cba\).
An có thói quen nhập mật khẩu bằng đầu chiếc bút để ấn phím nên thời gian di chuyển từ \(S_{i}\) sang \(S_{i + 1}\) sẽ bằng khoảng cách giữa hai kí tự này trên bàn phím. Như vậy, tổng thời gian nhập là \(\sum_{i = 1}^{n - 1} (pos(S_{i}) - pos(S_{i + 1}))\), trong đó \(pos(c)\) là vị trí của kí tự \(c\) trên bàn phím. Ví dụ nếu xâu \(S\) là xâu \(aacabc\) và bàn phím được bố trí là \(bac\) thì tổng thời gian di chuyển là \(|2 - 2| + |2 - 3| + |3 - 2| + |1 - 2| + |1 - 3| = 5\).
Yêu cầu: Hãy tìm cách bố trí bàn phím sao cho tổng thời gian di chuyển là nhỏ nhất.
Input
Dòng đầu ghi \(2\) số nguyên dương \(N\) và \(M\) cách nhau một dấu cách.
Dòng thứ hai ghi \(N\) kí tự của xâu \(S\).
Output
Tổng thời gian di chuyển nhỏ nhất.
Example
Test 1
Input
6 3
aacabc
Output
5
Scoring
Có \(20\%\) số test có \(N \leq 100\), \(M \leq 2\).
Có \(20\%\) số test có \(N \leq 100\), \(M \leq 10\).
Có \(30\%\) số test có \(N \leq 100000\), \(M \leq 10\).
Có \(30\%\) số test có \(N \leq 100000\), \(M \leq 20\).
Bình luận
Đăng nhập để bình luận
Chưa có bình luận nào.