There are two rectangular polygons (simple polygons with interior angles of only 90 or 270 degrees) G and T , inside another rectangular polygon M . You can place a gun anywhere on the boundary of G , then shoot a bullet in one of four diagonal directions, and then touch the boundary of T . You may shoot across an edge of T , but touching only a corner is also allowed. Your bullet is not allowed to touch G again (even touching a corner of G is not allowed), before touching T .
The edges of M can reflect the bullet. When the bullet touches a vertex of M , it may simply go through it (and not regarded as a reflection), or go back. These special cases are shown in the figure above.
Write a program to find the minimal number of reflections needed from G to T .