#include <bits/stdc++.h>
using namespace std;
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  int n, m;
  cin >> n >> m;
  char s[n][m];
  vector<long long> v[n][3];
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
      cin >> s[i][j];
      int p = 0;
      int q = 0;
      int r2 = 0;
      if (((int(s[i][j])) >= 97) && ((int(s[i][j])) <= 122)) {
        long long r = min(j, 1 + abs(m - 1 - j));
        if (p == 0) v[i][0].push_back(r);
        p++;
      } else if (((int(s[i][j])) >= 48) && ((int(s[i][j])) <= 57)) {
        long long r = min(j, 1 + abs(m - 1 - j));
        if (q == 0) v[i][1].push_back(r);
        q++;
      } else {
        long long r = min(j, 1 + abs(m - 1 - j));
        if (r2 == 0) {
          v[i][2].push_back(r);
          r2++;
        }
      }
    }
  }
  long long ans = INT_MAX;
  for (int i = 0; i < n; i++) {
    sort(v[i][0].begin(), v[i][0].end());
    sort(v[i][1].begin(), v[i][1].end());
    sort(v[i][2].begin(), v[i][2].end());
  }
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
      for (int k = 0; k < n; k++) {
        if (v[i][0].size() > 0 && v[j][1].size() > 0 && v[k][2].size() > 0 &&
            i != j && j != k && i != k) {
          ans = min(ans, v[i][0][0] + v[j][1][0] + v[k][2][0]);
        }
        if (v[i][0].size() > 0 && v[j][2].size() > 0 && v[k][1].size() > 0 &&
            i != j && j != k && i != k) {
          ans = min(ans, v[i][0][0] + v[j][2][0] + v[k][1][0]);
        }
        if (v[i][2].size() > 0 && v[j][1].size() > 0 && v[k][0].size() > 0 &&
            i != j && j != k && i != k) {
          ans = min(ans, v[i][2][0] + v[j][1][0] + v[k][0][0]);
        }
        if (v[i][1].size() > 0 && v[j][0].size() > 0 && v[k][2].size() > 0 &&
            i != j && j != k && i != k) {
          ans = min(ans, v[i][1][0] + v[j][0][0] + v[k][2][0]);
        }
        if (v[i][2].size() > 0 && v[j][0].size() > 0 && v[k][1].size() > 0 &&
            i != j && j != k && i != k) {
          ans = min(ans, v[i][2][0] + v[j][0][0] + v[k][1][0]);
        }
        if (v[i][1].size() > 0 && v[j][2].size() > 0 && v[k][0].size() > 0 &&
            i != j && j != k && i != k) {
          ans = min(ans, v[i][1][0] + v[j][2][0] + v[k][0][0]);
        }
      }
    }
  }
  cout << ans;
}
