Recurrent Neural Networks (RNNs) add additional complexity to the feed-forward ones, by converting the topology to a directed graph (which can have cycles). This allows the network to perform recursion and exhibit dynamic temporal behavior. This dynamic behavior creates persistence in the network, not dissimilar to memory. Importantly, a difference between RNNs and NNs is that, instead of having fixed-length input and output vectors, can be run sequentially. This allows networks to operate on sequences of inputs and thus enabling efficient parsing of content of varying length (one-to-many, many-to-one or many-to-many inputs-outputs).