问题 A: 编程课的密码

内存限制:256 MB 时间限制:2 S
题面:传统 评测方式:文本比较 上传者:
提交:125 通过:51

题目描述

       达莎爬完楼梯后就来到信息教室门口,她需要输入一个密码才能开始上课。密码是长度为n的字符串,满足以下要求:

      字符串中至少有一个数字,

      字符串中至少有一个拉丁字母的小写(小)字母,

     字符串中至少有三个列出的符号之一:“#”、“*”、“&”。



考虑到这是编程课的密码,编写密码并不容易。

对于密码的每个字符,分别从一个字符矩阵中获取。字符矩阵的每一行是一个长度为m的字符串,分别从每一行中获取一个字符组成最后的密码。初始时,n行字符串中的每个字符串上都有一个指第一个字符的指针,即所有指针都位于相应字符串中索引为1的字符上(所有位置从1开始编号)。

在一次操作中,达莎可以将一个字符串中的指针向左或向右移动一个字符。字符串是循环的,这意味着当我们将索引为1的字符上的指针向左移动时,它会移动到索引为m的字符,当我们将指针从位置m向右移动时,指针会移动到位置1

您需要确定使屏幕上显示的字符串成为有效密码所需的最小操作次数。

输入格式

第一行包含两个整数nm3 ≤ n ≤ 50, 1 ≤ m ≤ 50)分别表示-密码长度和分配给密码符号的字符串长度。

接下来的n行中的每一行都包含分配给密码字符串的第i个符号的字符串。其长度为m,由数字、小写英文字母和字符“#”“*”“&”组成。

数据保证总能得到一个有效的密码。

输出格式

输出一个整数表示-使屏幕上显示的字符串成为有效密码所需的最小操作次数。 
输入 #1



3 4
1**2
a3*0
c4**
输出 #1
1
输入 #2
5 5
#*&#*
*a1c&
&q2w*
#a3c#
*&#*&
输出 #2
3

注:

在第一次测试中,需要将第三个字符串的指针向左移动,以获得最佳答案。


在第二个测试中,可能的算法之一是:

1.将第二个符号的指针向右移动一次。

2.将第三个符号的指针向右移动两次。


输入样例 复制

3 4
1**2
a3*0
c4**

输出样例 复制

1