Generate a Python program that has the following intention:

The intention of the program is to create a function p1(height, start=1, end=3) that generates a list of steps to move a token from a starting position to an ending position, where the token can only move between positions 1, 2, and 3, and the starting position is not equal to the ending position. The function uses a recursive approach to generate the steps.

Here's a step-by-step explanation of the function:

1. If the height is 0 or less, return an empty list, as there is no need to move the token.
2. Choose a helper position, which is a position in the set {1, 2, 3} that is not equal to the start position and not equal to the end position.
3. Recursively call the function p1(height - 1, start, helper) to generate steps to move the token from the start position to the helper position.
4. Add the step of moving the token from the start position to the end position (using the helper position as an intermediate step).
5. Recursively call the function p1(height - 1, helper, end) to generate steps to move the token from the helper position to the end position.
6.Return the combined list of steps.

The function can be used to generate a sequence of moves for a game or puzzle where a token can only move between positions 1, 2, and 3, and the starting position is not equal to the ending position. Provide your reponse without using the word sequence.
user