Write a Program to Implement Water-Jug problem using Python.

from collections import deque

def solve_water_jug(c1, c2, target):
    queue, visited = deque([(0, 0, [])]), set()
    while queue:
        j1, j2, path = queue.popleft()
        if j1 == target or j2 == target: return path + [(j1, j2)]
        if (j1, j2) in visited: continue
        visited.add((j1, j2))
        queue.extend([(c1, j2, path + [(j1, j2)]), (j1, c2, path + [(j1, j2)]), (0, j2, path + [(j1, j2)]), (j1, 0, path + [(j1, j2)]),
                     (j1 - min(j1, c2 - j2), j2 + min(j1, c2 - j2), path + [(j1, j2)]),
                     (j1 + min(j2, c1 - j1), j2 - min(j2, c1 - j1), path + [(j1, j2)])])
    return None

# Example usage
c1, c2, target = 4, 3, 2 #Jug 1 capacity: 4, Jug 2 capacity: 3, Target: 2
solution = solve_water_jug(c1, c2, target)
if solution:
    for step, (j1, j2) in enumerate(solution):
        print(f"Step {step}: Jug1 = {j1}, Jug2 = {j2}")
else:
    print("No solution exists.")

'''
Step 0: Jug1 = 0, Jug2 = 0
Step 1: Jug1 = 4, Jug2 = 0
Step 2: Jug1 = 1, Jug2 = 3
Step 3: Jug1 = 1, Jug2 = 0
Step 4: Jug1 = 0, Jug2 = 1
Step 5: Jug1 = 4, Jug2 = 1
Step 6: Jug1 = 2, Jug2 = 3
'''