#include <bits/stdc++.h>
using namespace std;
int main() {
  int n, k;
  cin >> n >> k;
  vector<vector<int> > nums(n, vector<int>(k, 0));
  string tmp;
  getline(cin, tmp);
  for (int i = 0; i < n; ++i) {
    string cur;
    getline(cin, cur);
    for (int j = 0; j < k; ++j) {
      nums[i][j] = cur[j] - '0';
    }
  }
  int kfac = 1;
  for (int i = 2; i <= k; ++i) {
    kfac *= i;
  }
  vector<vector<vector<int> > > perms(
      kfac, vector<vector<int> >(n, vector<int>(k, 0)));
  vector<vector<int> > vals(kfac, vector<int>(n, 0));
  perms[0] = nums;
  for (int j = 0; j < n; ++j) {
    for (int q = 0; q < k; ++q) {
      vals[0][j] = 10 * vals[0][j] + perms[0][j][q];
    }
  }
  vector<int> per(k);
  for (int i = 0; i < k; ++i) {
    per[i] = i;
  }
  for (int i = 1; i < kfac; ++i) {
    next_permutation(per.begin(), per.end());
    for (int j = 0; j < n; ++j) {
      for (int q = 0; q < k; ++q) {
        perms[i][j][q] = nums[j][per[q]];
      }
      for (int q = 0; q < k; ++q) {
        vals[i][j] = 10 * vals[i][j] + perms[i][j][q];
      }
    }
  }
  int ans = *max_element(vals[0].begin(), vals[0].end()) -
            *min_element(vals[0].begin(), vals[0].end());
  for (int i = 1; i < kfac; ++i) {
    int cur_ans = *max_element(vals[i].begin(), vals[i].end()) -
                  *min_element(vals[i].begin(), vals[i].end());
    if (cur_ans < ans) {
      ans = cur_ans;
    }
  }
  cout << ans << endl;
  return 0;
}
