diff --git a/4_9_Exercises/Question 4.py b/4_9_Exercises/Question 4.py
new file mode 100644
index 0000000000000000000000000000000000000000..b5a713274b0b6b38e17ef6a122ca49f56e5f6079
--- /dev/null
+++ b/4_9_Exercises/Question 4.py	
@@ -0,0 +1,29 @@
+def np(x, y, trace=None):
+    if trace is None:
+        trace = [(0, 0)]
+    current = trace[-1]
+    if current in trace[:-1]:
+        return 0
+    if current[0] > x or current[1] > y or current[0] < 0 or current[1] < 0:
+        return 0
+    if (current[0], current[1]) == (x, y) and len(trace) > 1:
+        print(current[0], x, current[1], y, " this is in success")
+        print(trace)
+        return 1
+    if x + y < 2:
+        return 1
+
+    x_1, y_1 = (current[0], current[1] + 1) if current[1] < y else (current[0], current[1])
+    x_2, y_2 = (current[0] + 1, current[1]) if current[0] < x else (current[0], current[1])
+    x_3, y_3 = current[0] - 1, current[1]
+    x_4, y_4 = current[0], current[1] - 1
+
+    trace_1 = trace + [(x_1, y_1)]
+    trace_2 = trace + [(x_2, y_2)]
+    trace_3 = trace + [(x_3, y_3)]
+    trace_4 = trace + [(x_4, y_4)]
+
+    return np(x, y, trace_1) + \
+        np(x, y, trace_2) + \
+        np(x, y, trace_3) + \
+        np(x, y, trace_4)