Anagrams by Stack
How can anagrams result from sequences ofstack operations? There are two sequences of stack operators which can convertTROT to TORT:
[
i i i i o o o o
i o i i o o i o
]
where i stands for Pushand o stands for Pop. Your program should, given pairs ofwords produce sequences of stack operations which convert the first word to thesecond.
Input
The input will consist of several lines ofinput. The first line of each pair of input lines is to be considered as asource word (which does not include the end-of-line character). The second line(again, not including the end-of-line character) of each pair is a target word.The end of input is marked by end of file.
Output
For each input pair, your program shouldproduce a sorted list of valid sequences of i and o whichproduce the target word from the source word. Each list should be delimited by
[
]
and the sequences shouldbe printed in "dictionary order". Within each sequence, each i and o isfollowed by a single space and each sequence is terminated by a new line.
Process
A stack is a data storage and retrievalstructure permitting two operations:
Push - to insert an item and
Pop - to retrieve the most recently pushed item
We will use the symbol i (in)for push and o (out) for pop operations for an initially emptystack of characters. Given an input word, some sequences of push and popoperations are valid in that every character of the word is both pushed andpopped, and furthermore, no attempt is ever made to pop the empty stack. Forexample, if the word FOO is input, then the sequence:
i i o i o o |
is valid, but |