# Shortest path on a Square

Given side of a square n and two points (x1, y1) and (x2, y2) on the boundaries of the given square. The task is to find the shortest path through the square sides between these two points where the corner coordinates of the square are are (0, 0), (n, 0), (0, n) and (n, n) .

Examples:

Input: n = 2, x1 = 0, y1 = 0, x2 = 1, y2 = 0
Output: 1

Input: n = 26, x1 = 21, y1 = 0, x2 = 26, y2 = 14
Output: 19

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach:

• If both the x and y coordinates of a point is greater than the other then the shortest distance will be abs(x2 – x1) + abs(y2 – y1).
• Else, the shortest distance will be equal to min((x1 + y1 + x2 + y2), (4 * n) – (x1 + y1 + x2 + y2))

Below is the implementation of the above approach:

## C++

 `// C++ implementation of the approach ` `#include ` `using` `namespace` `std; ` ` `  `// Function to return the length ` `// of the minimum path between ` `// two points on a square of given side ` `int` `minPath(``int` `n, ``int` `x1, ``int` `y1, ``int` `x2, ``int` `y2) ` `{ ` ` `  `    ``// If both of the x and y coordinates ` `    ``// of one point is greater than the other ` `    ``if` `((x1 <= x2 && y1 <= y2) || (x1 >= x2 && y1 >= y2)) ` `        ``return` `(``abs``(x1 - x2) + ``abs``(y1 - y2)); ` ` `  `    ``return` `min(x1 + x2 + y1 + y2, (4 * n) - (x1 + x2 + y1 + y2)); ` `} ` ` `  `// Driver code ` `int` `main() ` `{ ` `    ``// Side of the square ` `    ``int` `n = 2; ` `    ``int` `x1 = 0, y1 = 0, x2 = 1, y2 = 0; ` `    ``cout << minPath(n, x1, y1, x2, y2); ` ` `  `    ``return` `0; ` `} `

## Python 3

# Python3 implementation of above approach

# Function to return the length of the
# minimum path between two points
# on a square of given side
def minPath(n, x1, y1, x2, y2):

# If both of the x and y coordinates
# of one point is greater than the other
if ((x1 <= x2 and y1 <= y2) or (x1 >= x2 and y1 >= y2)):
return (abs(x1 – x2) + abs(y1 – y2));

return min(x1 + x2 + y1 + y2, (4 * n) –
(x1 + x2 + y1 + y2));

# Driver code

# side of the square
n = 2; x1 = 0; y1 = 0
x2 = 1; y2 = 0
print(minPath(n, x1, y1, x2, y2))

# This code is contributed
# by Shashank_Sharma

## PHP

 `= ``\$x2` `&& ``\$y1` `>= ``\$y2``))  ` `        ``return` `(``abs``(``\$x1` `- ``\$x2``) + ``abs``(``\$y1` `- ``\$y2``));  ` ` `  `    ``return` `min(``\$x1` `+ ``\$x2` `+ ``\$y1` `+ ``\$y2``, (4 * ``\$n``) - (``\$x1` `+ ``\$x2` `+ ``\$y1` `+ ``\$y2``));  ` `}  ` ` `  `    ``// Driver code  ` `     `  `    ``// Side of the square  ` `    ``\$n` `= 2;  ` `    ``\$x1` `= 0 ; ` `    ``\$y1` `= 0 ; ` `    ``\$x2` `= 1 ; ` `    ``\$y2` `= 0 ;  ` `    ``echo` `minPath(``\$n``, ``\$x1``, ``\$y1``, ``\$x2``, ``\$y2``);  ` `     `  `// This code is contributed by Ryuga ` `?> `

Output:

```1
```

My Personal Notes arrow_drop_up

Article Tags :

1

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.