CF761C Dasha and Password
题目描述
Dasha 克服了楼梯后,来到了教室。她需要输入一个密码才能开始上课。密码是一个长度为 $n$ 的字符串,并且需要满足以下条件:
- 字符串中至少有一个数字;
- 字符串中至少有一个小写字母(拉丁字母);
- 字符串中至少包含以下三个符号之一:`\#`、`\*`、`&`。
由于是编程课,输入这个密码并不容易。
每个密码字符对应一串长度为 $m$ 的字符串,每个这样的 $n$ 个字符串都有一个指针指向某个字符。最开始时,所有指针均指向各自字符串的第一个字符(位置编号从 1 开始)。
在一次操作中,Dasha 可以将某一个字符串上的指针向左或向右移动一个字符。字符串是环状的,也就是说,如果指针在第 1 位向左移动,则会移动到第 $m$ 位;如果在第 $m$ 位向右移动,则会移动到第 1 位。
你需要求出最少需要多少次操作,才能使屏幕上显示的字符串成为一个有效密码。
输入格式
第一行包含两个整数 $n$、$m$,$3 \leq n \leq 50$,$1 \leq m \leq 50$ —— 密码长度和每个指定字符串的长度。
接下来的 $n$ 行,每行一个长度为 $m$ 的字符串,这些字符串由数字、小写拉丁字母以及符号 `\#`、`\*`、`&` 组成。
保证数据有解,即一定可以得到有效的密码。
输出格式
输出一个整数,表示最少需要多少次操作才能使屏幕上显示的字符串成为有效密码。
说明/提示
在第一个测试样例中,需要将第三个字符串的指针向左移动一次,从而得到最优解。
在第二个测试样例中,一种可能的操作方法是:
- 将第二个字符的指针向右移动一次;
- 将第三个字符的指针向右移动两次。
由 ChatGPT 5 翻译