@Override
    public void start(BufferedReader jin, PrintStream jout) throws IOException {
        // TODO: Validar entrada
        String data;
        ArrayList<String> lines = new ArrayList<String>();
        // HashSet es una colección que no acepta elementos repetidos
        HashSet<Character> orderedChars = new HashSet<Character>();
        int lim = 0;

        // Agregamos todas las líneas en la entrada para procesarlas luego.
        do {
            data = jin.readLine();
            if (data != null && !data.isEmpty()) {
                lines.add(data);
                if(data.length() > lim) {
                    // registramos la longitud de la línea más grande.
                    lim = data.length();
                }
            }
        } while (data != null && !data.isEmpty());
        StringBuilder sb = new StringBuilder();
        // Recorremos columnas
        for (int i = 0; i < lim; i++) {
            // Recorremos cada línea
            for (String line : lines) {
                if (i < line.length()) {
                    // Si hay un caractér en la posición 'i' de la línea
                    if (orderedChars.add(line.charAt(i))) {
                        // agregamos dicho caracter a un buffer
                        sb.append(line.charAt(i));
                    }
                }
            }
        }
        jout.println(sb.toString());
    }