/* =========================================================================================== 
                                                                                             
    Wilfredo Cruz Yarlequé                                            wcruzy@gmail.com 
                                                                      http://wcruzy.pe 
                                                                                             
   Constante de Kaprekar:      https://es.wikipedia.org/wiki/Constante_de_Kaprekar             
   =========================================================================================== */


public class Kaprekar1
{
	// metodo main
	public static void main(String[] args)
	{
		int i, j, k, temp;
		int minuendo, sustraendo, diferencia;

		// Convierte los cuatro argumentos de la entrada en un arreglo
		int entero[] = new int[4];

		for (i=0; i<4; i++)
			entero[i] = Integer.parseInt(args[i]);

		// Iteraciones para encontrar la constante de Kaprekar
		k = 1;
		do
		{
			//	Ordena el arreglo en forma ascendente
			for (i=0; i<=2; i++)
				for (j=i+1; j<=3; j++)
					if (entero[i] < entero[j])
					{
						temp = entero[i];
						entero[i] = entero[j];
						entero[j] = temp;
					}

			// Determina el minuendo y el sustraendo
			minuendo = entero[0] * 1000 + entero[1] * 100 + entero[2] * 10 + entero[3];
			sustraendo = entero[3] * 1000 + entero[2] * 100 + entero[1] * 10 + entero[0];

			// Calcula la diferencia
			diferencia = minuendo - sustraendo;

			System.out.printf("\nIteración %d: %4d %4d --> %4d\n", k, minuendo, sustraendo, diferencia);

			// Incrementa en 1 la iteracion			
			k++;

			// Si diferencia no es 6174, se descompone en cuatro dígitos
			if (diferencia != 6174)
			{
				temp = diferencia;
				entero[0] = temp / 1000;
				temp = temp % 1000;
				entero[1] = temp / 100;
				temp = temp % 100;
				entero[2] = temp / 10;
				entero[3] = temp % 10;
			}

		} while (diferencia != 6174);
		
		System.out.println("\n----------------------------------------\n");
	}
}