This problem is based on a famous mobile game called parking jam. Here is a video footage from the game play.
https://www.youtube.com/watch?v=cDv_-LezHPw
In order to define the rules better, I decided to change it up a bit. Cars, walls, and empty spaces are now represented by characters on a grid of string. Each car consists of an arrow spanning two adjacent squares with the charset <>v^|-. Walls are marked by *, and the exit is marked by =. Here is an example input:
********
*<-|->^*
* v<-|*
*<- | =
* |->v *