open List let rec f?(c=input_char stdin)l=c<' '&[]map print_char(s@[' ']))l;exists(mem c)l&f l;f(concat(map(fun s->[s;s@[c]])l));;f[[]]