#include <bits/stdc++.h>
using namespace std;
const int inf = 1e9;
int dp[55][8], d1[55], d2[55], d3[55], n, m;
string s;
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> m;
  for (int i = 1; i <= n; ++i) {
    cin >> s;
    d1[i] = inf;
    d2[i] = inf;
    d3[i] = inf;
    for (int j = 0; j < s.size(); ++j) {
      if (s[j] >= 'a' && s[j] <= 'z') {
        d1[i] = min(d1[i], min(j, (int)s.size() - j));
      } else if (s[j] >= '0' && s[j] <= '9') {
        d2[i] = min(d2[i], min(j, (int)s.size() - j));
      } else {
        d3[i] = min(d3[i], min(j, (int)s.size() - j));
      }
    }
  }
  for (int i = 0; i < 8; ++i) {
    dp[0][i] = inf;
  }
  dp[0][0] = 0;
  for (int i = 1; i <= n; ++i) {
    dp[i][0] = dp[i - 1][0];
    dp[i][1] = min(dp[i - 1][1], dp[i - 1][0] + d1[i]);
    dp[i][2] = min(dp[i - 1][2], dp[i - 1][0] + d2[i]);
    dp[i][4] = min(dp[i - 1][4], dp[i - 1][0] + d3[i]);
    dp[i][3] =
        min(dp[i - 1][3], min(dp[i - 1][1] + d2[i], dp[i - 1][2] + d1[i]));
    dp[i][5] =
        min(dp[i - 1][5], min(dp[i - 1][1] + d3[i], dp[i - 1][4] + d1[i]));
    dp[i][6] =
        min(dp[i - 1][6], min(dp[i - 1][2] + d3[i], dp[i - 1][4] + d2[i]));
    dp[i][7] = min(min(dp[i - 1][7], dp[i - 1][6] + d1[i]),
                   min(dp[i - 1][5] + d2[i], dp[i - 1][3] + d3[i]));
  }
  cout << dp[n][7];
}
