"""simple docstring"""
# Imports
import numpy as np



class 					lowerCAmelCase_      :



				"""simple docstring"""

				def __init__(			self						,      lowerCAmelCase=None						,      lowerCAmelCase=None						,      lowerCAmelCase=None						,      lowerCAmelCase=None						,      lowerCAmelCase=None      ):






										"""simple docstring"""

										self.set_matricies(red=lowerCAmelCase						,      green=lowerCAmelCase						,      blue=lowerCAmelCase						,      red_edge=lowerCAmelCase						,      nir=lowerCAmelCase      )

				def 						snake_case	(			self						,      lowerCAmelCase=None						,      lowerCAmelCase=None						,      lowerCAmelCase=None						,      lowerCAmelCase=None						,      lowerCAmelCase=None      ):






										"""simple docstring"""

										if red is not None:
																snake_case        =     red
										if green is not None:
																snake_case        =     green
										if blue is not None:
																snake_case        =     blue
										if red_edge is not None:
																snake_case        =     red_edge
										if nir is not None:
																snake_case        =     nir
										return True

				def 						snake_case	(			self						,      lowerCAmelCase=""						,      lowerCAmelCase=None						,      lowerCAmelCase=None						,      lowerCAmelCase=None						,      lowerCAmelCase=None						,      lowerCAmelCase=None      ):






										"""simple docstring"""

										self.set_matricies(red=lowerCAmelCase						,      green=lowerCAmelCase						,      blue=lowerCAmelCase						,      red_edge=lowerCAmelCase						,      nir=lowerCAmelCase      )
										snake_case        =     {
										    'ARVI2': self.arvaa,
										    'CCCI': self.ccci,
										    'CVI': self.cvi,
										    'GLI': self.gli,
										    'NDVI': self.ndvi,
										    'BNDVI': self.bndvi,
										    'redEdgeNDVI': self.red_edge_ndvi,
										    'GNDVI': self.gndvi,
										    'GBNDVI': self.gbndvi,
										    'GRNDVI': self.grndvi,
										    'RBNDVI': self.rbndvi,
										    'PNDVI': self.pndvi,
										    'ATSAVI': self.atsavi,
										    'BWDRVI': self.bwdrvi,
										    'CIgreen': self.ci_green,
										    'CIrededge': self.ci_rededge,
										    'CI': self.ci,
										    'CTVI': self.ctvi,
										    'GDVI': self.gdvi,
										    'EVI': self.evi,
										    'GEMI': self.gemi,
										    'GOSAVI': self.gosavi,
										    'GSAVI': self.gsavi,
										    'Hue': self.hue,
										    'IVI': self.ivi,
										    'IPVI': self.ipvi,
										    'I': self.i,
										    'RVI': self.rvi,
										    'MRVI': self.mrvi,
										    'MSAVI': self.m_savi,
										    'NormG': self.norm_g,
										    'NormNIR': self.norm_nir,
										    'NormR': self.norm_r,
										    'NGRDI': self.ngrdi,
										    'RI': self.ri,
										    'S': self.s,
										    'IF': self._if,
										    'DVI': self.dvi,
										    'TVI': self.tvi,
										    'NDRE': self.ndre,
										}

										try:
																return funcs[index]()
										except KeyError:
																print('Index not in the list!'      )
																return False

				def 						snake_case	(			self      ):






										"""simple docstring"""

										return -0.18 + (1.17 * ((self.nir - self.red) / (self.nir + self.red)))

				def 						snake_case	(			self      ):






										"""simple docstring"""

										return ((self.nir - self.redEdge) / (self.nir + self.redEdge)) / (
										    (self.nir - self.red) / (self.nir + self.red)
										)

				def 						snake_case	(			self      ):






										"""simple docstring"""

										return self.nir * (self.red / (self.green**2))

				def 						snake_case	(			self      ):






										"""simple docstring"""

										return (2 * self.green - self.red - self.blue) / (
										    2 * self.green + self.red + self.blue
										)

				def 						snake_case	(			self      ):






										"""simple docstring"""

										return (self.nir - self.red) / (self.nir + self.red)

				def 						snake_case	(			self      ):






										"""simple docstring"""

										return (self.nir - self.blue) / (self.nir + self.blue)

				def 						snake_case	(			self      ):






										"""simple docstring"""

										return (self.redEdge - self.red) / (self.redEdge + self.red)

				def 						snake_case	(			self      ):






										"""simple docstring"""

										return (self.nir - self.green) / (self.nir + self.green)

				def 						snake_case	(			self      ):






										"""simple docstring"""

										return (self.nir - (self.green + self.blue)) / (
										    self.nir + (self.green + self.blue)
										)

				def 						snake_case	(			self      ):






										"""simple docstring"""

										return (self.nir - (self.green + self.red)) / (
										    self.nir + (self.green + self.red)
										)

				def 						snake_case	(			self      ):






										"""simple docstring"""

										return (self.nir - (self.blue + self.red)) / (self.nir + (self.blue + self.red))

				def 						snake_case	(			self      ):






										"""simple docstring"""

										return (self.nir - (self.green + self.red + self.blue)) / (
										    self.nir + (self.green + self.red + self.blue)
										)

				def 						snake_case	(			self						,      lowerCAmelCase=0.08						,      lowerCAmelCase=1.22						,      lowerCAmelCase=0.03      ):






										"""simple docstring"""

										return a * (
										    (self.nir - a * self.red - b)
										    / (a * self.nir + self.red - a * b + x * (1 + a**2))
										)

				def 						snake_case	(			self      ):






										"""simple docstring"""

										return (0.1 * self.nir - self.blue) / (0.1 * self.nir + self.blue)

				def 						snake_case	(			self      ):






										"""simple docstring"""

										return (self.nir / self.green) - 1

				def 						snake_case	(			self      ):






										"""simple docstring"""

										return (self.nir / self.redEdge) - 1

				def 						snake_case	(			self      ):






										"""simple docstring"""

										return (self.red - self.blue) / self.red

				def 						snake_case	(			self      ):






										"""simple docstring"""

										snake_case        =     self.ndvi()
										return ((ndvi + 0.5) / (abs(ndvi + 0.5      ))) * (abs(ndvi + 0.5      ) ** (1 / 2))

				def 						snake_case	(			self      ):






										"""simple docstring"""

										return self.nir - self.green

				def 						snake_case	(			self      ):






										"""simple docstring"""

										return 2.5 * (
										    (self.nir - self.red) / (self.nir + 6 * self.red - 7.5 * self.blue + 1)
										)

				def 						snake_case	(			self      ):






										"""simple docstring"""

										snake_case        =     (2 * (self.nir**2 - self.red**2) + 1.5 * self.nir + 0.5 * self.red) / (
										    self.nir + self.red + 0.5
										)
										return n * (1 - 0.25 * n) - (self.red - 0.1_25) / (1 - self.red)

				def 						snake_case	(			self						,      lowerCAmelCase=0.16      ):






										"""simple docstring"""

										return (self.nir - self.green) / (self.nir + self.green + y)

				def 						snake_case	(			self						,      lowerCAmelCase=0.5      ):






										"""simple docstring"""

										return ((self.nir - self.green) / (self.nir + self.green + n)) * (1 + n)

				def 						snake_case	(			self      ):






										"""simple docstring"""

										return np.arctan(
										    ((2 * self.red - self.green - self.blue) / 30.5) * (self.green - self.blue)      )

				def 						snake_case	(			self						,      lowerCAmelCase=None						,      lowerCAmelCase=None      ):






										"""simple docstring"""

										return (self.nir - b) / (a * self.red)

				def 						snake_case	(			self      ):






										"""simple docstring"""

										return (self.nir / ((self.nir + self.red) / 2)) * (self.ndvi() + 1)

				def 						snake_case	(			self      ):






										"""simple docstring"""

										return (self.red + self.green + self.blue) / 30.5

				def 						snake_case	(			self      ):






										"""simple docstring"""

										return self.nir / self.red

				def 						snake_case	(			self      ):






										"""simple docstring"""

										return (self.rvi() - 1) / (self.rvi() + 1)

				def 						snake_case	(			self      ):






										"""simple docstring"""

										return (
										    (2 * self.nir + 1)
										    - ((2 * self.nir + 1) ** 2 - 8 * (self.nir - self.red)) ** (1 / 2)
										) / 2

				def 						snake_case	(			self      ):






										"""simple docstring"""

										return self.green / (self.nir + self.red + self.green)

				def 						snake_case	(			self      ):






										"""simple docstring"""

										return self.nir / (self.nir + self.red + self.green)

				def 						snake_case	(			self      ):






										"""simple docstring"""

										return self.red / (self.nir + self.red + self.green)

				def 						snake_case	(			self      ):






										"""simple docstring"""

										return (self.green - self.red) / (self.green + self.red)

				def 						snake_case	(			self      ):






										"""simple docstring"""

										return (self.red - self.green) / (self.red + self.green)

				def 						snake_case	(			self      ):






										"""simple docstring"""

										snake_case        =     np.max([np.max(self.red      ), np.max(self.green      ), np.max(self.blue      )]      )
										snake_case        =     np.min([np.min(self.red      ), np.min(self.green      ), np.min(self.blue      )]      )
										return (max_value - min_value) / max_value

				def 						snake_case	(			self      ):






										"""simple docstring"""

										return (2 * self.red - self.green - self.blue) / (self.green - self.blue)

				def 						snake_case	(			self      ):






										"""simple docstring"""

										return self.nir / self.red

				def 						snake_case	(			self      ):






										"""simple docstring"""

										return (self.ndvi() + 0.5) ** (1 / 2)

				def 						snake_case	(			self      ):






										"""simple docstring"""

										return (self.nir - self.redEdge) / (self.nir + self.redEdge)



"""simple docstring"""
def 				lowerCAmelCase__      (     _UpperCamelCase    :			str   )   ->			bool:





						"""simple docstring"""






						if not all(x.isalpha() for x in string   ):
												raise ValueError('String must only contain alphabetic characters.'   )

						snake_case        =     sorted(string.lower()   )
						return len(_UpperCamelCase   ) == len(set(_UpperCamelCase   )   )


if __name__ == "__main__":
					SCREAMING_SNAKE_CASE__   =					input("Enter a string ").strip()

					SCREAMING_SNAKE_CASE__   =					is_isogram(input_str)
					print(f"""{input_str} is {'an' if isogram else 'not an'} isogram.""")


