#include <bits/stdc++.h>
int n, k;
int b[8];
char str[10];
char num[8][10];
void permu(char str[]) {
  int i, l, j, t, k, len;
  char c;
  len = strlen(str);
  for (j = 1; j < len; j++)
    if (str[j - 1] < str[j]) i = j;
  for (k = 0; k < len; k++)
    if (str[i - 1] < str[k]) l = k;
  c = str[i - 1];
  str[i - 1] = str[l];
  str[l] = c;
  for (j = i, t = len - 1; j <= t; j++, t--) {
    c = str[j];
    str[j] = str[t];
    str[t] = c;
  }
}
int power(int x) {
  int i, res = 1;
  for (i = 0; i < x; i++) res *= 10;
  return res;
}
int arange(int i, char str[]) {
  int res, tmp, digit[9], j = 0;
  res = 0;
  for (j = 0; j < k; j++) digit[j] = num[i][j] - '0';
  for (j = 0; j < k; j++) res = res + power(k - (str[j] - '0')) * digit[j];
  return res;
}
int fact(int x) {
  int res = 1, i;
  for (i = 1; i <= x; i++) res *= i;
  return res;
}
void Insert_sort(int X[]) {
  int j, p;
  int tmp;
  for (p = 1; p < n; p++) {
    tmp = X[p];
    for (j = p; tmp < X[j - 1] && j > 0; j--) X[j] = X[j - 1];
    X[j] = tmp;
  }
}
int main() {
  int i, tmp, max, j;
  scanf("%d%d", &n, &k);
  for (i = 0; i < n; i++) scanf("%s", num[i]);
  for (i = 0; i < k; i++) str[i] = '0' + i + 1;
  str[i] = 0;
  max = 1000000000;
  for (j = 0; j < fact(k); j++) {
    for (i = 0; i < n; i++) b[i] = arange(i, str);
    Insert_sort(b);
    tmp = b[n - 1] - b[0];
    if (max > tmp) max = tmp;
    if (j < fact(k) - 1) permu(str);
  }
  printf("%d\n", max);
  return 0;
}
