#include <bits/stdc++.h>
using namespace std;
vector<char> vec[200];
vector<string> str;
void func(int c) {
  vector<string> ptr;
  ptr = str;
  int f = 1;
  for (int i = 0; i < vec[c].size(); i++) {
    ptr[i] += vec[c][i];
  }
  for (int i = 0; i + 1 < ptr.size(); i++) {
    if (ptr[i] > ptr[i + 1]) {
      f = 0;
      break;
    }
  }
  if (f == 1) {
    for (int i = 0; i < vec[c].size(); i++) {
      str[i] += vec[c][i];
    }
  }
  return;
}
int main() {
  int n, m, ans = 0, idx, pdx;
  cin >> n >> m;
  for (int i = 0; i < n; i++) {
    string s = "";
    str.push_back("");
  }
  for (int i = 0; i < n; i++) {
    string str;
    cin >> str;
    for (int j = 0; j < str.size(); j++) {
      vec[j].push_back(str[j]);
    }
  }
  for (int i = 0; i < m; i++) {
    int flag = 1;
    for (int j = 0; j + 1 < vec[i].size(); j++) {
      if (vec[i][j] > vec[i][j + 1]) {
        flag = 0;
        break;
      }
    }
    if (flag == 1) {
      for (int l = 0; l < vec[i].size(); l++) {
        str[l] += vec[i][l];
      }
      idx = i;
      break;
    }
  }
  while (idx + 1 < m) {
    func(idx + 1);
    idx++;
  }
  cout << (m - str[0].size()) << endl;
}
