<Problem>
https://vn.spoj.com/PTIT/problems/BCPERMU1/
#include <iostream>
#include <vector>
using namespace std;
#define MAX 1000000000
int n, k;
vector<string> dStr(100);
int x[100];
int d[100]{ 0 };
int res = MAX;
void update() {
int maxValue = 0;
int minValue = MAX;
for (int i = 0; i < dStr.size(); i++) {
int num = 0;
for (int j = 1; j <= k; j++) {
num = num * 10 + (dStr[i][x[j] - 1] - '0');
}
maxValue = max(maxValue, num);
minValue = min(minValue, num);
}
res = min(res, maxValue - minValue);
}
void generate(int i) {
for (int j = 1; j <= k; j++) {
if (!d[j]) {
x[i] = j;
d[j] = 1;
if (i == k) {
update();
}
else generate(i + 1);
d[j] = 0;
}
}
}
int main() {
cin >> n >> k;
cin.ignore();
dStr.resize(n);
for (int i = 0; i < n; i++) {
cin >> dStr[i];
}
generate(1);
cout << res << endl;
return 0;
}