Counting King's Hamiltonian Paths through 3-by-N grid Background
A Hamiltonian path is a path on a graph that steps through its vertices exactly once. On a grid, this means stepping through every cell exactly once.
On a square grid, a Chess King can move to a horizontally, vertically, or diagonally adjacent cell in one step.
Challenge
Count the number of Hamiltonian paths using Chess King's moves through a square grid of 3 rows and N columns (denoted X below), starting at the left side of the entire grid (denoted S below) and ending at the right side (denoted E below):
  &lt;------N------&gt;
  X X X ... X X X
S X X X ... X X X E
  X X X ... X X X

In other words, count all paths from S to E that passes through every X exactly once using only King's movements.
Standard code-golf rules apply. The shortest code in bytes wins. Kudos if you can solve this with short code in a way other than brute-forcing all possible paths.
Test cases
Generated using this APL code (equivalent Python 3 + Numpy) which I created by finding 15 possible states of the rightmost column and deriving a 15-by-15 transition matrix (figures up to N=3 are crosschecked with a pure brute-force Python).
N  -&gt; Answer
0  -&gt; 1
1  -&gt; 2
2  -&gt; 28
3  -&gt; 154
4  -&gt; 1206
5  -&gt; 8364
6  -&gt; 60614
7  -&gt; 432636
8  -&gt; 3104484
9  -&gt; 22235310
10 -&gt; 159360540

Thanks to @mypronounismonicareinstate and @ChristianSievers for confirming the test cases in the sandbox.
Wolfram Language (Mathematica), 76 72 bytes
LinearRecurrence[{6,12,-27,2,30,4,-6},{0,0,1,2,3,29,155}-6/5,{#+4}]+1/5&amp;

Try it online!
The non-homogeneous linear recurrence equation is so much shorter to express that it saves a few bytes to modify the code to handle non-homogeneous linear recurrence.
More info: In this case, it cannot be represented as a polynomial. I tried to put the recurrence into RSolve, but it takes a long time to figure out the exact symbolic form (I terminate it before it completes), and I'm pretty sure that the required coefficients are irrational (approximate numerical formula can be obtained).
Returns a singleton list containing the result.