func_code_string: #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;   }   