#include <bits/stdc++.h>
using namespace std;
char q[15][15], p[15][15], max_s[15], min_s[15], tmp[15], ans[15];
int np[15];
int main() {
  int i, j, k, n, carry, t, flag;
  while (scanf("%d %d", &n, &k) != EOF) {
    for (i = 0; i < n; ++i) scanf("%s", q + i);
    for (i = 0; i < k; ++i) {
      np[i] = i;
      ans[i] = '9';
    }
    ans[i] = '\0';
    do {
      for (i = 0; i < k; ++i) {
        min_s[i] = '9';
        max_s[i] = '0';
      }
      min_s[i] = '\0';
      max_s[i] = '\0';
      for (i = 0; i < n; ++i) {
        for (j = 0; j < k; ++j) {
          p[i][j] = q[i][np[j]];
        }
        p[i][j] = '\0';
        if (strcmp(p[i], min_s) < 0) strcpy(min_s, p[i]);
        if (strcmp(p[i], max_s) > 0) strcpy(max_s, p[i]);
      }
      carry = 0;
      for (i = k - 1; i >= 0; --i) {
        t = max_s[i] - min_s[i] - carry;
        if (t < 0) {
          carry = 1;
          t += 10;
        } else
          carry = 0;
        tmp[i] = t + '0';
      }
      tmp[k] = '\0';
      if (strcmp(tmp, ans) < 0) strcpy(ans, tmp);
    } while (next_permutation(np, np + k));
    flag = 0;
    for (i = 0; i < k; ++i) {
      if (ans[i] == '0') {
        if (flag != 0) printf("%c", ans[i]);
      } else {
        if (flag == 0) flag = 1;
        printf("%c", ans[i]);
      }
    }
    if (flag == 0)
      printf("0\n");
    else
      printf("\n");
  }
  return 0;
}
