pythonを使い、数字を順番通りにならべかえるゲームを作っています。terminalで表示して遊べるところまではできたのですが、ソースコードにも書いているrandom.shuffle(list1)を使ってしまうと、本当に数字がランダムにシャッフルされてしまい、元どおりにならべかえることが難しくなってしまうゲームになっています。
現在、

123
456
78

と右下に1マス空け、上下左右ランダムに10回ほど動いてからゲームを開始するというプログラムを書きたいのですが、これをどうやればいいか悩んでいます。
教えていただけると幸いです。

import string
import random
import sys
moves = 0
game_start=True 
list1 = [0,1,2,3,4,5,6,7,8]
random.shuffle(list1)
print('\n'*2)

matrix33=[]
while list1 !=[]:
    matrix33.append(list1[:3])
    list1 = list1[3:]

def zero(board):
    global empty_space
    for x in range (len(board)):
        for y in range(len(board[x])):
            if board[x][y]==0:
                empty_space = (x,y)
    return empty_space

def draw_board(board):
    print('\n\t+-----+-----+-----|')
    for x in range (len(board)):
        for y in range(len(board[x])):
            if board[x][y] == 0:
                print('\t|  XX' , end='')
            else:
                print('\t|  ' + '{:02d}' .format(board[x][y]), end=' ') 
        print('\n\t+-------+-------+-------|')

def ask_number():
    global num , piece 
    num = input('\nplease type the number of the piece to move : ( q ) to quit  ')
    if num in ['q','Q']:
        print('\n\ngame over  ')
        sys.exit()     
    num = int(num)
    piece=()
    for i in range(len(matrix33)):
        for j in range(len(matrix33[i])):
            if num == matrix33[i][j]:
                piece = (i,j)
    return piece , num

zero(matrix33)
while game_start:
    draw_board(matrix33)      
    ask_number()         
    if num > 8:
        print('illegal move , try again  ')
    else:
        if(empty_space==(piece[0]-1,piece[1]))\
           or(empty_space==(piece[0]+1,piece[1]))\
           or(empty_space==(piece[0],piece[1]-1))\
           or(empty_space==(piece[0],piece[1]+1)):
            matrix33[empty_space[0]][empty_space[1]]=num
            matrix33[piece[0]][piece[1]]=0
            empty_space=(piece[0],piece[1])
            moves = moves +1
            print()
            print('you have made ',moves , 'moves so far ')
            print(2*'\n')
        else:
            print('illegal move , try again ')