"""simple docstring"""





def      lowerCamelCase_(__SCREAMING_SNAKE_CASE  )->    str:
							_SCREAMING_SNAKE_CASE			  =    0

							# if input_string is "aba" than new_input_string become "a|b|a"
							_SCREAMING_SNAKE_CASE			  =    """"""
							_SCREAMING_SNAKE_CASE			  =    """"""

							# append each character + "|" in new_string for range(0, length-1)
							for i in input_string[: len(__SCREAMING_SNAKE_CASE  ) - 1]:
														new_input_string += i + "|"
							# append last character
							new_input_string += input_string[-1]

							# we will store the starting and ending of previous furthest ending palindromic
							# substring
							_SCREAMING_SNAKE_CASE			  =    0, 0

							# length[i] shows the length of palindromic substring with center i
							_SCREAMING_SNAKE_CASE			  =    [1 for i in range(len(__SCREAMING_SNAKE_CASE  )  )]

							# for each character in new_string find corresponding palindromic string
							_SCREAMING_SNAKE_CASE			  =    0
							for j in range(len(__SCREAMING_SNAKE_CASE  )  ):
														_SCREAMING_SNAKE_CASE			  =    1 if j > r else min(length[l + r - j] // 2     ,	r - j + 1  )
														while (
														    j - k >= 0
														    and j + k < len(__SCREAMING_SNAKE_CASE  )
														    and new_input_string[k + j] == new_input_string[j - k]
														):
																					k += 1

														_SCREAMING_SNAKE_CASE			  =    2 * k - 1

														# does this string is ending after the previously explored end (that is r) ?
														# if yes the update the new r to the last index of this
														if j + k - 1 > r:
																					_SCREAMING_SNAKE_CASE			  =    j - k + 1  # noqa: E741
																					_SCREAMING_SNAKE_CASE			  =    j + k - 1

														# update max_length and start position
														if max_length < length[j]:
																					_SCREAMING_SNAKE_CASE			  =    length[j]
																					_SCREAMING_SNAKE_CASE			  =    j

    # create that string
							_SCREAMING_SNAKE_CASE			  =    new_input_string[start - max_length // 2 : start + max_length // 2 + 1]
							for i in s:
														if i != "|":
																					output_string += i

							return output_string


if __name__ == "__main__":
			import doctest

			doctest.testmod()



"""simple docstring"""





from __future__ import annotations



def      lowerCamelCase_(__SCREAMING_SNAKE_CASE     ,	__SCREAMING_SNAKE_CASE     ,	__SCREAMING_SNAKE_CASE     ,	)->    tuple:
							if (electron_conc, hole_conc, intrinsic_conc).count(0  ) != 1:
														raise ValueError("""You cannot supply more or less than 2 values"""  )
							elif electron_conc < 0:
														raise ValueError("""Electron concentration cannot be negative in a semiconductor"""  )
							elif hole_conc < 0:
														raise ValueError("""Hole concentration cannot be negative in a semiconductor"""  )
							elif intrinsic_conc < 0:
														raise ValueError(
														    """Intrinsic concentration cannot be negative in a semiconductor"""  )
							elif electron_conc == 0:
														return (
														    "electron_conc",
														    intrinsic_conc**2 / hole_conc,
														)
							elif hole_conc == 0:
														return (
														    "hole_conc",
														    intrinsic_conc**2 / electron_conc,
														)
							elif intrinsic_conc == 0:
														return (
														    "intrinsic_conc",
														    (electron_conc * hole_conc) ** 0.5,
														)
							else:
														return (-1, -1)


if __name__ == "__main__":
			import doctest

			doctest.testmod()


