#include #include int K, citac, superCitac; char cifry[8], cifry2[8], pozice[8]; void tisk(void) { if (citac < superCitac) printf("%s ", cifry); else printf("%s", cifry); } void posunCislici(int poz, int stav) { int cifra = pozice[poz]; if (poz == K) return; if (citac == 0) posunCislici(poz + 1, stav); if (cifry[cifra] == 48) { while (cifry[cifra] < 57) { cifry[cifra]++; citac++; if (stav) tisk(); posunCislici(poz + 1, stav); } } else if (cifry[cifra] == 57) { while (cifry[cifra] > 48) { cifry[cifra]--; citac++; if (stav) tisk(); posunCislici(poz + 1, stav); } } else if (cifry[cifra] < 52) { while (cifry[cifra] > 48) { cifry[cifra]--; citac++; if (stav) tisk(); posunCislici(poz + 1, stav); } while (cifry[cifra] < 57) { cifry[cifra]++; citac++; if (stav) tisk(); posunCislici(poz + 1, stav); } } else { while (cifry[cifra] < 57) { cifry[cifra]++; citac++; if (stav) tisk(); posunCislici(poz + 1, stav); } while (cifry[cifra] > 48) { cifry[cifra]--; citac++; if (stav) tisk(); posunCislici(poz + 1, stav); } } } char hod(char a) { return (a - 48 < 57 - a) ? a - 48 : 57 - a; } int main() { scanf("%s", cifry); while (cifry[0] >= 48 && cifry[0] <= 57) { K = strlen(cifry); int i; for (i = 0; i < K; i++) { pozice[i] = i; } int a,b; for (a = 0; a < K; a++) { for (b = 0; b < K - 1; b++) { if (hod(pozice[a]) < hod(pozice[b])) { char temp = pozice[a]; pozice[a] = pozice[b]; pozice[b] = temp; } } } strcpy(cifry2, cifry); citac = 0; posunCislici(0, 0); printf("%d\n", citac); strcpy(cifry, cifry2); superCitac = citac; citac = 0; posunCislici(0, 1); printf("\n"); scanf("%s", cifry); } return 0; }