/BCPERMU1 - Hoán vị có độ chênh lệch bé nhất

<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;
        }