#include #include #include #include #include using namespace std; int main() { string str; vector result; int directions[7]; int len; char tmp, target; // while(1) { result.clear(); cin >> str; if(str == "-1") break; len = str.length(); // // nulovani for(int i = 0; i < len; i++) { // zjistim smer tmp = str[i]; if(tmp >= '5') { target = '9'; directions[i] = +1; } else { target = '0'; directions[i] = -1; } // projedu tim smerem while(str[i] != target) { str[i] += directions[i]; result.push_back(str); } // otocim smer pro budouci pruchod directions[i] *= -1; } // // kombinace int d1 = 9, d2 = 10, d3 = 10, d4 = 10, d5 = 10, d6 = 10, d7 = 10; switch(len) { case 1: goto cisla1; break; case 2: goto cisla2; break; case 3: goto cisla3; break; case 4: goto cisla4; break; case 5: goto cisla5; break; case 6: goto cisla6; break; case 7: goto cisla7; break; } // cisla7: for(d7 = 0; d7 < 10; d7++) { cisla6: for(d6 = 0; d6 < 10; d6++) { cisla5: for(d5 = 0; d5 < 10; d5++) { cisla4: for(d4 = 0; d4 < 10; d4++) { cisla3: for(d3 = 0; d3 < 10; d3++) { cisla2: for(d2 = 0; d2 < 10; d2++) { cisla1: for(d1 = 0; d1 < 9; d1++) { str[0] += directions[0]; result.push_back(str); } directions[0] *= -1; if(d2 < 9) { str[1] += directions[1]; result.push_back(str); } } directions[1] *= -1; if(d3 < 9) { str[2] += directions[2]; result.push_back(str); } } directions[2] *= -1; if(d4 < 9) { str[3] += directions[3]; result.push_back(str); } } directions[3] *= -1; if(d5 < 9) { str[4] += directions[4]; result.push_back(str); } } directions[4] *= -1; if(d6 < 9) { str[5] += directions[5]; result.push_back(str); } } directions[5] *= -1; if(d7 < 9) { str[6] += directions[6]; result.push_back(str); } } // int im = result.size() - 1; printf("%d\n", im + 1); for(int i = 0; i < im; i++) printf("%s ", result[i].c_str()); printf("%s\n", result[im].c_str()); } // return 0; }