Parity of a Permutation Background
The parity of a permutation, as defined by wikipedia, is as follows:

The sign or signature of a permutation σ is denoted sgn(σ) and defined as +1 if σ is even and −1 if σ is odd.
The sign of a permutation can be explicitly expressed as
sgn(σ) = (−1)^N(σ)
where N(σ) is the number of inversions in σ.
Alternatively, the sign of a permutation σ can be defined from its decomposition into the product of transpositions as
sgn(σ) = (−1)^m
where m is the number of transpositions in the decomposition.

For those of you who are not fond of Greek alphabet soup in their math, I'll try and simplify the definition a bit with an example (also stolen from wikipedia).
Example
Consider the input array {1, 2, 3, 4, 5}, and a permutation of it, let's say, {3, 4, 5, 2, 1}. In order to get from the original array to its permutation, you must swap indices 0 and 2, 1 and 3, then 2 and 4. Although this is not a unique solution, the parity is well-defined so this works for all cases.
Since it requires 3 swaps, we label this permutation with an odd parity. As you might expect, a permutation that requires an even amount of swaps is said to have an even parity.
Challenge
Your challenge is to write a program in as few bytes as possible to determine the parity of a permutation. Your program or function must:

Accept as arguments, two input arrays (or strings) representing a set before and after a permutation.
Return or print the character e for even or o for odd, given the permutation.
Should assume that all indices in the arrays or strings have unique values.

Test Cases
Assuming you declared a function named f:
f([10], [10]) == &quot;e&quot;
f([10, 30, 20], [30, 20, 10]) == &quot;e&quot;
f([10, 30, 20, 40], [30, 20, 40, 10]) == &quot;o&quot;

This is code-golf, the shortest program in bytes wins!
MATL, 17 16 bytes
1 byte removed thanks to a suggestion by Dennis
2$St!&lt;Rz2\'oe'w)

This works in current version (15.0.0) of the language.
Try it online!
Explanation
This uses the definition of parity in terms of inversions. An inversion is a pair of elements in the second array that are in the &quot;wrong&quot; order compared with the first array. Since the first array need not be sorted, we first sort it and the same rearrangement needed for that sorting is applied to the second array. Then an inversion corresponds to a pair of elements that is not increasing in the second array.
Note also that the two input arrays can be swapped and the result is the same. So it's not important which array is considered to be the &quot;original&quot; and which the &quot;permuted&quot;.
2$S     % implicitly take two row vectors. Sort second and apply the indices
        % of that sorting to the first
t!      % duplicate. Transpose into column vector
&lt;       % true for elements of the column vector that exceed those of the 
        % row vector. Gives a 2D array with all pairs of comparisons
R       % keep only upper triangular part of that array
z       % number of nonzero elements. This is the number of inversions
2\      % parity of that number: gives 0 or 1
'oe'w   % push string 'eo' below the top of the stack
)       % apply index to produce 'e' or 'o'. An index 1 refers to the first
        % element, whereas 0 refers to the last. Implicitly display