Problem: 2050D - Digital string maximization
Language: c++17 

Solution 1 (runtime: 93 ms):
#include <bits/stdc++.h>
using namespace std;

void solve(){
    string s;
    cin>>s;
    
    // map<pair<int, int>, int> vals;
    
    // for (int i = 0; i < s.length(); i++) {
    //     int key1 = i;
    //     int key2 = s[i] - '0';
    //     vals[make_pair(key1, key2)] = (s[i] - '0' - i);
    // }

    // vector<pair<pair<int, int>, int>> vl(vals.begin(), vals.end());

    // sort(vl.begin(), vl.end(), [](const auto& a, const auto& b) {
    //     return a.second >= b.second;
    // });

    // string result;
    // vector<int> original_positions;
    
    // int c = 0;
    // for (const auto& entry : vl) {
    //     // result += to_string(entry.first.second);
    //     if(c<entry.first.first){
    //         if(c>=1){
    //             result += to_string(entry.second+c);
    //         }
    //         else
    //             result += to_string(entry.second);
            
    //     }
    //     else{
    //         result += to_string(entry.first.second);
    //     }
    //     // original_positions.push_back(entry.first.first);
    //     ++c;
    // }

    // cout<<result<<endl;

    for (int i = 0; i < s.size(); i++) {
        int best = s[i] - '0', pos = i;
        for (int j = i; j < min(i + 10, (int) s.size()); j++) {
            if (s[j] - '0' - (j - i) > best) {
                best = s[j] - '0' - (j - i);
                pos = j;
            }
        }
        while (pos > i) {
            swap(s[pos], s[pos - 1]);
            pos--;
        }
        s[i] = char(best + '0');
    }
    cout << s<<endl;

    return;
}

int main() {
	long long t;
	cin>>t;
	
	while(t--){
	    solve();
	}

}


Solution 2 (runtime: 62 ms):
#include <bits/stdc++.h>
#define int long long
#define f(i, n1, n2) for (int i = n1; i < n2; i++)
#define fi(n1, n2) for (int i = n1; i < n2; i++)
#define ri(n1) for (int i = n1 - 1; i >= 0; i--)
#define in(nam) cin >> nam;
#define nin(nam) int nam; cin >> nam;
#define e endl;
#define out(nam) cout << nam << e
#define outar(n) for(auto it:n)cout<<it<<" "; 
#define v(n, i) vector<int> n(i);
#define vi(n) vector<int> n;
#define vin(nam)for(auto &i:nam)cin>>i;
#define map(name) map<int, int> name;
#define yon(ans) cout << ((ans) ? "YES" : "NO") << "\n";
#define all(a) a.begin(), a.end()
#define sorta(a) sort(a.begin(), a.end());
#define sortre(a) sort(a.rbegin(), a.rend());
using namespace std;
const int mod = 1e9 + 7;

void chance() {
    string s;in(s)
    int n = s.length();
    fi(0,n){
        int crnt = s[i]-'0',dis=0,fn=crnt,fi=i;
        f(j,i+1,min(i+10,n)){
            dis++;  
            int nex = s[j] - '0' - (dis);
            // if (nex < 0 || nex > 9) continue;
            // if(crnt < nex) {
                if(nex>fn){
                    fi=j;
                    fn=nex;
                }
            // }
        }

        // if(fn > crnt){
        //     // s[fi]=fn;
            // swap(s[i] , s[fi]);
        //     // char tem = s[fi];
            // out(i<<" "<<fi)
        //     s[fi] = s[i];
        // }
        // out(s[fi]<<" "<<s[fi-1])
        while(fi > i){
            swap(s[fi] , s[fi-1]);
            fi--;   
        }
        s[i]='0'+fn;

    }
    out(s)
}

int32_t main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);
    int t = 1;
    in(t) // when t
    while (t--) {
        chance();
    }
    return 0;
}