#include <bits/stdc++.h>
using namespace std;
long a[(362880)][100];
long x[100], v[100];
string s[100];
long n, m, num, ans;
void dfs(long d) {
  if (d > m) {
    ++num;
    for (long i = 1; i <= m; ++i) a[num][i] = x[i];
    return;
  }
  for (long i = 1; i <= m; ++i)
    if (!v[i]) {
      v[i] = 1;
      x[d] = i;
      dfs(d + 1);
      v[i] = 0;
      x[d] = 0;
    }
}
long change(string x) {
  long sum = 0;
  for (long i = 0; i < m; ++i) sum = sum * 10 + x[i] - '0';
  return sum;
}
int main() {
  cin >> n >> m;
  memset(v, 0, sizeof(v));
  for (long i = 1; i <= n; ++i) {
    cin >> s[i];
    while (s[i].size() < m) s[i] = "0" + s[i];
  }
  num = 0;
  ans = (1000000000);
  dfs(1);
  for (long i = 1; i <= num; ++i) {
    long minnum = (1000000000);
    long maxnum = 0;
    for (long j = 1; j <= n; ++j) {
      string ts;
      ts = "";
      long tmp;
      for (long k = 1; k <= m; ++k) ts += s[j][a[i][k] - 1];
      tmp = change(ts);
      if (tmp < minnum) minnum = tmp;
      if (tmp > maxnum) maxnum = tmp;
    }
    if (maxnum - minnum < ans) ans = maxnum - minnum;
  }
  cout << ans << endl;
  return 0;
}
