Swapping Digits

Con questo codice faccio 0/100 e non capisco il perchè dato che quello che faccio è controllare se alla fine del numero ci sono già 00, 25, 50, 75 o posso in un qualche modo arrivare a metterli. Qualche suggerimento?

#include <bits/stdc++.h>

using namespace std;

int solve () {
    string num;
    cin >> num;

    int N = num.length();

    if (N < 2) return 0;

    if (num[N - 1] == '0') {
        if (num[N - 2] == '0') return 0;
        if (num[N - 2] == '5') return 0;
    }

    if (num[N - 1] == '5') {
        if (num[N - 2] == '2') return 0;
        if (num[N - 2] == '7') return 0;
    }

    vector<int> digits(10, 0);

    for (int i = 0; i < N; i++) {
        digits[num[i] - '0']++;
    }

    if (num[N - 1] == '0') {
        if (digits[0] - 1 >= 1) return 1;
        if (digits[5] >= 1) return 1;
    }

    if (num[N - 1] == '5') {
        if (digits[2] >= 1) return 1;
        if (digits[7] >= 1) return 1;
    }

    if (num[N - 2] == '0' && digits[0] > 1) return 1;
    if (num[N - 2] == '2' && digits[5] >= 1) return 1;
    if (num[N - 2] == '5' && digits[0] >= 1) return 1;
    if (num[N - 2] == '7' && digits[5] >= 1) return 1;

    if (digits[0] >= 2) return 2;
    if (digits[2] >= 1 && digits[5] >= 1) return 2;
    if (digits[5] >= 1 && digits[0] >= 1) return 2;
    if (digits[7] >= 1 && digits[5] >= 1) return 2;

    return -1;
}

int main () {
    int T;
    cin >> T;

    for (int i = 1; i <= T; i++) {
        cout << solve() << "\n";
    }

    return 0;
}

prova con 99957

Ah capito, grazie mille.