#include <bits/stdc++.h>
using namespace std;
const int base = 1000 * 1000 * 1000, inf = 1000 * 1000 * 1000;
int buf = 0;
long long gcd(long long a, long long b) {
  while (b) b ^= a ^= b ^= a %= b;
  return a;
}
int p[10], e[10][10];
string a[10];
int main() {
  int n, k, ans = inf;
  cin >> n >> k;
  for (int(i) = (1); (i) <= (n); ++(i)) {
    cin >> a[i];
    for (int(j) = 0; (j) < (a[i].length()); ++(j)) e[i][j + 1] = a[i][j] - '0';
  }
  for (int(i) = (1); (i) <= (k); ++(i)) p[i] = i;
  bool ok = true;
  for (;;) {
    if (!ok) break;
    int MAX = -inf, MIN = inf;
    for (int(i) = (1); (i) <= (n); ++(i)) {
      int w[10];
      long long buf = 0;
      for (int(j) = (1); (j) <= (k); ++(j)) {
        w[j] = e[i][p[j]];
        long long y = 1;
        for (int(qq) = 0; (qq) < (k - j); ++(qq)) y *= 10;
        buf += w[j] * y;
      }
      if (buf > MAX) MAX = buf;
      if (buf < MIN) MIN = buf;
    }
    if (ans > MAX - MIN) ans = MAX - MIN;
    ok = false;
    for (int i = k - 1; i >= 1; i--) {
      if (p[i] < p[i + 1]) {
        int mn = -1;
        for (int(j) = (i + 1); (j) <= (k); ++(j))
          if (mn == -1 || p[j] > p[i] && p[j] < p[mn]) mn = j;
        swap(p[i], p[mn]);
        reverse(p + i + 1, p + k + 1);
        ok = true;
        break;
      }
    }
  }
  cout << ans;
}
