Quasi palindromi (Stringhe diverse)

Continuo a non capire perché mi da 0/100. Su tutti i tasks mi da come errore “stringhe diverse”. Ma il programma sembra che funzioni sempre, anche perché ho provato anche inventandomi alcune soluzioni. L’unica cosa che si nota è che con il programma d’esempio, il mio problema mi da un’altra soluzione rispetto a quella di esempio, ma pur sempre valida. Qualcuno potrebbe aiutarmi?

Ecco qui il codice:

#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;

int R,C;
char rettangolo[8][8];
bool isPalindrome(char stringa[])
{
    for(int i = 0;i<R/2;i++)
    {
        if(stringa[i] != stringa[R-i-1] && ((stringa[i] != '0') && (stringa[R-i-1] != '0'))) return false;
    }
    return true;
}
int main()
{
    ifstream in("input.txt");
    ofstream out("output.txt");
    in >> R >> C;
    for (int i = 0; i < R; i++){
        char temp[10];
        in >> temp;
        //cout<<temp<<" ";
        for (int j = 0; j < C; j++){
            rettangolo[i][j] = temp[j];
            //cout<<temp[j]<<" ";
        }
    }
    for(int i = 0;i<C;i++)
    {
        char prova[10];
        for(int j = 0;j<R;j++)
        {
            prova[j] = rettangolo[j][i];
        }
        do{
            next_permutation(prova,prova+R);
            //cout<<prova<<endl;
        }while(!isPalindrome(prova));
        for(int z = 0;z<R;z++)
        {
            rettangolo[z][i] = prova[z];
        }
    }
    for(int i = 0;i<R;i++)
    {
        for(int j = 0;j<C;j++)
        {
            out<<rettangolo[i][j];
        }
        out<<endl;
    }
    return 0;
}

Il messaggio del correttore è chiaro: stai producendo in output stringhe diverse da quelle fornite in input.
Nello specifico, temo tu non abbia compreso bene il problema. In particolare, osserva che gli M numeri che ti vengono forniti in input devono essere esattamente gli stessi M da fornirsi in output (permutati in un qualche ordine).
Non è consentito alterare le cifre di tali numeri!