#include #include int powers[] = {1, 10, 100, 1000, 10000, 100000, 1000000, 10000000}; char lock[10]; int len; void print(int i){ if (lock[i] == '0' || lock[i] == '1'){ for(; lock[i] <= '9'; lock[i]++){ if (i > 0) print(i - 1); if (lock[i] != '9') printf("%s ", lock); } lock[i]--; }else{ for(; lock[i] >= '0'; lock[i]--){ if (i > 0) print(i - 1); if (lock[i] != '0') printf("%s ", lock); } lock[i]++; } } int main(int argc, char * argv[]){ int i, changed, j; while(1){ i = 0; while (1) { lock[i] = (char) getchar(); if (lock[i] == '-') return 0; if (lock[i] == '\n') { lock[i] = 0; break; } i++; } len = i; j = 0; for(i = 0; i < len; i++){ if (lock[i] >= '5') j += ('9' - lock[i]); else j += (lock[i] - '0'); } printf("%d\n", powers[len]-1+j); changed = 0; for (i = 0; i < len; i++) { if (lock[i] >= '5' && lock[i] < '9') { changed = 1; lock[i]++; for (; lock[i] <= '9'; lock[i]++) printf("%s ", lock); lock[i]--; } else if (lock[i] < '5' && lock[i] > '0') { changed = 1; lock[i]--; for (; lock[i] >= '0'; lock[i]--) printf("%s ", lock); lock[i]++; } } /*printf("sep\n"); if (changed) printf("%s ", lock);*/ if (lock[0] == '0') lock[0]++; else lock[0]--; print(len - 1); printf("%s\n", lock); } return 0; }