import java.io.*;
import java.util.*;
import java.lang.*;
import java.math.*;

public class hack {

private StringBuilder sb  = new StringBuilder();
private int[] pole;
private int pocet = 0;

public static void main(String[] args) throws Exception {
//try{	
	new hack();
//}
//catch (Exception e){} //this is function called hack :-P
}

public hack() throws Exception {
	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

 	while(true) {
		String s = br.readLine();
		pole = new int[s.length()];
	
		if (s.contains("-1")) {
			break;
		}
		
		for (int i = 0; i < s.length(); i++) {
			pole[i] = Integer.parseInt(""+s.charAt(i));
			if (pole[i]>=5)
				pocet += Math.pow(10,i)*((9-pole[i]) + 9);
			else 
				pocet += Math.pow(10,i)*(pole[i] + 9);
		}
		
		System.out.println(pocet);
		rekurze(0);
		if(sb.length() > 0)
		sb.deleteCharAt(sb.length()-1);
		System.out.println(sb.toString());
		sb = new StringBuilder();
		pocet = 0;
  	}
}

private int rekurze(int level) {
	if (level>= pole.length)
		return 0;	
	if (pole[level] >= 5) {
		for (int i = pole[level] + 1; i < 10; i++) {
			rekurze(level+1);
			pole[level] = i;
			printArray() ;
		}
		for (int i = 8; i >=0; i--) {
			rekurze(level+1);
			pole[level] = i;
			printArray() ;
		}

		rekurze(level+1);
		
	} else {
		for (int i = pole[level] - 1; i >=0; i--) {
			rekurze(level+1);
			pole[level] = i;
			printArray() ;
		}
		for (int i = 1; i < 10; i++) {
			rekurze(level+1);
			pole[level] = i;
			printArray() ;
		}
		rekurze(level+1);
		
	}
	
	return pocet;
}

private void printArray() {
	for (int i = pole.length-1; i >= 0; i--) {
		sb.append(pole[i]);		
	}
	sb.append(" ");
	
	if(sb.capacity() > 10) {
		System.out.print(sb.toString());
		sb = new StringBuilder();
	}
}
}