A maze solver using bi-directional Breadth First Search and Shared Variable Concurrency