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

public class hack {

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

public static void main(String[] args) throws Exception{
	new hack();
	
}

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));
		}

		rekurze(0);
		System.out.println(pocet);
		System.out.println(sb.toString());
		pocet = 0;
		sb = new StringBuffer();
  		//break;
  	}
}

private int rekurze(int level) {
	if (level>= pole.length)
		return 0;
	//int pocet = 0;	
	if (pole[level] >= 5) {
		boolean ret = false;
		for (int i = pole[level] + 1; i < 10; i++) {
			ret = true;
			rekurze(level+1);
			pole[level] = i;
			printArray(0) ;
			pocet ++; 
		}
		//if (ret)
		//	return pocet;
		for (int i = 8; i >=0; i--) {
			rekurze(level+1);
			pole[level] = i;
			printArray(1) ;
			pocet ++; 
		}
		rekurze(level+1);
		
	} else {
		boolean ret = false;
		for (int i = pole[level] - 1; i >=0; i--) {
			ret = true;
			rekurze(level+1);
			pole[level] = i;
			printArray(2) ;
			pocet ++ ;//= rekurze(level+1);
		}
		//if (ret)
	 	//	return pocet;
		for (int i = 1; i < 10; i++) {
			rekurze(level+1);
			pole[level] = i;
			printArray(3) ;
			pocet ++ ;
		}
		rekurze(level+1);
		
	}
	
	return pocet;
}

private void printArray(int fn) {
	for (int i = pole.length-1; i >= 0; i--) {
		sb.append(pole[i]);
	}
	//sb.append("-"+fn+" ");
	sb.append(" ");
}
}