  We propose protocols for obliviously evaluating finite-state machines, i.e.,
the evaluation is shared between the provider of the finite-state machine and
the provider of the input string in such a manner that neither party learns the
other's input, and the states being visited are hidden from both. For alphabet
size $|\Sigma|$, number of states $|Q|$, and input length $n$, previous
solutions have either required a number of rounds linear in $n$ or
communication $\Omega(n|\Sigma||Q|\log|Q|)$. Our solutions require 2 rounds
with communication $O(n(|\Sigma|+|Q|\log|Q|))$. We present two different
solutions to this problem, a two-party one and a setting with an untrusted but
non-colluding helper.
