CF1183E Subsequences (easy version)

题目描述

简单版和困难版的唯一区别在于约束条件。 一个子序列是指可以通过从另一个字符串中删除若干个(也可以不删除)字符,并且不改变剩余字符顺序而得到的字符串。被删除的字符不要求连续,中间可以有间隔。例如,对于字符串 "abaca",以下字符串是它的子序列:"abaca"、"aba"、"aaa"、"a" 和 ""(空串)。但以下字符串不是它的子序列:"aabaca"、"cb" 和 "bcaa"。 现在给定一个由 $n$ 个小写拉丁字母组成的字符串 $s$。 每一步,你可以选择 $s$ 的任意一个子序列 $t$,并将其加入集合 $S$。集合 $S$ 不能包含重复的元素。该操作的代价为 $n - |t|$,其中 $|t|$ 表示所选子序列的长度(即代价等于被删除字符的数量)。 你的任务是求出获得大小为 $k$ 的集合 $S$ 的最小总代价,或者报告无法做到。

输入格式

输入的第一行包含两个整数 $n$ 和 $k$($1 \leq n, k \leq 100$),分别表示字符串的长度和集合的大小。 第二行包含一个由 $n$ 个小写拉丁字母组成的字符串 $s$。

输出格式

输出一个整数——如果无法获得大小为 $k$ 的集合 $S$,则输出 $-1$。否则,输出获得集合 $S$ 的最小总代价。

说明/提示

在第一个样例中,我们可以生成 $S = \{\text{"asdf"}, \text{"asd"}, \text{"adf"}, \text{"asf"}, \text{"sdf"}\}$。$S$ 中第一个元素的代价为 $0$,其余元素的代价为 $1$。因此 $S$ 的总代价为 $4$。 由 ChatGPT 4.1 翻译