



def  UpperCAmelCase__    (    lowercase__						,       lowercase__						,       lowercase__						,       lowercase__   ) ->      int:
						__lowercase	,			__lowercase					=				len(lowercase__   ), len(grid[0]   )
						if (
						    min(lowercase__						,       lowercase__   ) < 0
						    or row == row_length
						    or col == col_length
						    or (row, col) in visit
						    or grid[row][col] == 1
						):
												return 0
						if row == row_length - 1 and col == col_length - 1:
												return 1

						visit.add((row, col)   )

						__lowercase					=				0
						count += depth_first_search(lowercase__						,       row + 1						,       lowercase__						,       lowercase__   )
						count += depth_first_search(lowercase__						,       row - 1						,       lowercase__						,       lowercase__   )
						count += depth_first_search(lowercase__						,       lowercase__						,       col + 1						,       lowercase__   )
						count += depth_first_search(lowercase__						,       lowercase__						,       col - 1						,       lowercase__   )

						visit.remove((row, col)   )
						return count


if __name__ == "__main__":
			import doctest

			doctest.testmod()










def  UpperCAmelCase__    (    lowercase__   ) ->      Optional[int]:
						__lowercase					=				len(lowercase__   )
						__lowercase					=				sum(lowercase__   )

						__lowercase					=				[[False for x in range(s + 1   )] for y in range(n + 1   )]

						for i in range(1						,       n + 1   ):
												__lowercase					=				True

						for i in range(1						,       s + 1   ):
												__lowercase					=				False

						for i in range(1						,       n + 1   ):
												for j in range(1						,       s + 1   ):
																		__lowercase					=				dp[i][j - 1]

																		if arr[i - 1] <= j:
																								__lowercase					=				dp[i][j] or dp[i - 1][j - arr[i - 1]]

						for j in range(int(s / 2   )						,       -1						,       -1   ):
												if dp[n][j] is True:
																		__lowercase					=				s - 2 * j
																		break

						return diff





