def paymo_bfs(graph, start, goal, diameter = float('inf')):
	"""
	Description:
		Breadth-First Search for the connection level of the sender and receiver. This
		function also has a diameter input to specify the maximum connection distance
		desired before False is returned.
		
	Input: graph    [defaultdict(set)] - Graph of the current state of the user network
		   start    [int] - userID who is sending the money using paymo
		   goal     [int] - userID who is receiving the money using paymo
		   diameter [int or float] - maximum number of connections before False is returned
		   
	Output: len(path) - 1 [int] - connections distance
			OR
			False [Bool] - if the connection is greater than the diameter
	"""
	queue = [(start, [start])];
	disc = set([start]);
	while queue:
		(vertex, path) = queue.pop(0);
		if len(path) - 1 > diameter:
			return False;
		elif goal == vertex:
			return len(path) - 1;
		for next in graph[vertex] - set(path) - disc:
			if next not in disc:
				queue.append((next, path + [next]));
				disc.add(next);
	return False;