#include <bits/stdc++.h>
using namespace std;
typedef long long  ll;
typedef  long double  ld;
#define fo(i,start,n,step) for(ll i = start; i < n; i+=step)
#define ends cout << "\n";
#define pb(val) push_back(val);
#define all(v) v.begin(), v.end()
using namespace std;

int main() {
    int t;
    cin >> t;
    vector<ll> a;
    fo(i, 0, 16, 1) {
        a.pb(2050 * pow(10, i));
    }
    while(t--) {
    ll n;
    cin >> n;
//    for(ll x : a) {
//        cout << x <<" ";
//    }
//    ends;
    int ok = 0;
    int res = 0;
    while (n > 0) {
        for (ll i = a.size() - 1; i >= 0; i--) {
//            cout << n - a[i] << ' ';
            if (n - a[i] >= 0 || i == 0 ) {
//                cout << 'x';
                res++;
                n -= a[i];
                break;
            }
        }
        if (n == 0) {
//            cout <<'x';
            ok = 1;
            break;
        }

    }
//    cout << n << ' ';
    if (ok) {
        cout << res;
    } else cout << -1;
    ends;
}

//    int n;
//    cin >> n;
//    vector<int> a(n);
//    vector<int> dp(n);
//    vector<int> b(n);
//    vector<int> c(n);
//    fo(i,0,n,1) {
//        cin >> a[i];
//        cin >> b[i];
//        cin >> c[i];
//    }
//    dp[0] = a[0];
//    dp[1] = min(b[1] , dp[0] + a[1]);
//    dp[2] = min(c[2] , min(dp[0] + a[2] , dp[1] + b[2]));
//    fo(i,3,n,1) {
//        dp[i] = min(c[i] , min(dp[i-1] + b[i], dp[i-2] + a[i]));
//    }
//    fo(i,0,n,1) {
//        cout << dp[i] <<  ' ';
//    }
//

}