import random

RIGHT = [
    'alizarin',
    'amaranth',
    'amber',
    'amethyst',
    'apricot',
    'aqua',
    'aquamarine',
    'asparagus',
    'auburn',
    'azure',
    'beige',
    'bistre',
    'black',
    'blue',
    'brass',
    'bronze',
    'brown',
    'buff',
    'burgundy',
    'cardinal',
    'carmine',
    'celadon',
    'cerise',
    'cerulean',
    'champagne',
    'charcoal',
    'chartreuse',
    'chestnut',
    'chocolate',
    'cinnabar',
    'cinnamon',
    'cobalt',
    'copper',
    'coral',
    'corn',
    'cornflower',
    'cream',
    'crimson',
    'cyan',
    'dandelion',
    'denim',
    'ecru',
    'emerald',
    'eggplant',
    'firebrick',
    'flax',
    'fuchsia',
    'gamboge',
    'gold',
    'goldenrod',
    'green',
    'grey',
    'harlequin',
    'heliotrope',
    'indigo',
    'ivory',
    'jade',
    'khaki',
    'lavender',
    'lemon',
    'lilac',
    'lime',
    'linen',
    'magenta',
    'magnolia',
    'malachite',
    'maroon',
    'mauve',
    'mustard',
    'myrtle',
    'ochre',
    'olive',
    'olivine',
    'orange',
    'orchid',
    'peach',
    'pear',
    'periwinkle',
    'persimmon',
    'pink',
    'platinum',
    'plum',
    'puce',
    'pumpkin',
    'purple',
    'razzmatazz',
    'red',
    'rose',
    'ruby',
    'russet',
    'rust',
    'saffron',
    'salmon',
    'sangria',
    'sapphire',
    'scarlet',
    'seashell',
    'sepia',
    'silver',
    'smalt',
    'tan',
    'tangerine',
    'taupe',
    'teal',
    'thistle',
    'tomato',
    'turquoise',
    'ultramarine',
    'vermilion',
    'violet',
    'viridian',
    'wheat',
    'white',
    'wisteria',
    'xanthic',
    'yellow',
    'zucchini'
]

LEFT = [
    'baggy',
    'beady',
    'bluesy',
    'blurry',
    'boozy',
    'breezy',
    'bumpy',
    'cheeky',
    'chewy',
    'chummy',
    'clammy',
    'cloudy',
    'cozy',
    'crabby',
    'craggy',
    'cranky',
    'crappy',
    'dorky',
    'droopy',
    'flabby',
    'flaky',
    'flimsy',
    'foggy',
    'freaky',
    'frumpy',
    'fuzzy',
    'gamy',
    'geeky',
    'gimpy',
    'gloppy',
    'goopy',
    'greasy',
    'grumpy',
    'gummy',
    'hasty',
    'hazy',
    'hilly',
    'homely',
    'homey',
    'jumpy',
    'lanky',
    'leaky',
    'lousy',
    'lovely',
    'lumpy',
    'messy',
    'muggy',
    'muzzy',
    'nerdy',
    'nippy',
    'paltry',
    'pasty',
    'pokey',
    'pretty',
    'queasy',
    'randy',
    'ready',
    'scaly',
    'scanty',
    'scummy',
    'seedy',
    'shabby',
    'shaggy',
    'shaky',
    'sickly',
    'silly',
    'skanky',
    'skimpy',
    'skinny',
    'slaphappy',
    'sleazy',
    'sleepy',
    'slimy',
    'sloppy',
    'smelly',
    'snappy',
    'snazzy',
    'snippy',
    'snoopy',
    'squeaky',
    'squirrely',
    'stealthy',
    'stinky',
    'stuffy',
    'sunny',
    'surly',
    'tacky',
    'tasty',
    'thirsty',
    'trippy',
    'ugly',
    'wheezy',
    'whiny',
    'wiggy',
    'wimpy',
    'woolly',
    'woozy',
    'zippy',
    'abyssinian',
    'affenpinscher',
    'akbash',
    'akita',
    'albatross',
    'alligator',
    'angelfish',
    'angora',
    'ant',
    'anteater',
    'antelope',
    'argentino',
    'armadillo',
    'audemer',
    'avocet',
    'axolotl',
    'baboon',
    'badger',
    'balinese',
    'bandicoot',
    'barb',
    'barnacle',
    'barracuda',
    'bat',
    'beagle',
    'bear',
    'beaver',
    'bee',
    'beetle',
    'binturong',
    'bird',
    'birman',
    'bison',
    'bloodhound',
    'blue',
    'boar',
    'bobcat',
    'bombay',
    'bongo',
    'bonobo',
    'booby',
    'bordeaux',
    'bracke',
    'budgerigar',
    'buffalo',
    'bulldog',
    'bullfrog',
    'burmese',
    'butterfly',
    'buzzard',
    'caiman',
    'camel',
    'capuchin',
    'capybara',
    'caracal',
    'cassowary',
    'cat',
    'caterpillar',
    'catfish',
    'cattle',
    'centipede',
    'chameleon',
    'chamois',
    'cheetah',
    'chicken',
    'chihuahua',
    'chimpanzee',
    'chin',
    'chinchilla',
    'chinook',
    'chipmunk',
    'chow',
    'cichlid',
    'civet',
    'clam',
    'coati',
    'cockroach',
    'collie',
    'coral',
    'corgi',
    'cougar',
    'cow',
    'coyote',
    'crab',
    'crane',
    'crocodile',
    'cuscus',
    'cuttlefish',
    'dachsbracke',
    'dachshund',
    'dalmatian',
    'dane',
    'deer',
    'devil',
    'dhole',
    'dingo',
    'discus',
    'dodo',
    'dog',
    'dogfish',
    'dollar',
    'dolphin',
    'donkey',
    'dormouse',
    'dragon',
    'dragonfly',
    'drever',
    'duck',
    'dugong',
    'dunker',
    'eagle',
    'earwig',
    'echidna',
    'eel',
    'elephant',
    'eleuth',
    'emu',
    'falcon',
    'ferret',
    'fish',
    'flamingo',
    'flounder',
    'fly',
    'forest',
    'fossa',
    'fousek',
    'fowl',
    'fox',
    'foxhound',
    'frigatebird',
    'frise',
    'frog',
    'gar',
    'gecko',
    'gerbil',
    'gharial',
    'gibbon',
    'giraffe',
    'goat',
    'goose',
    'gopher',
    'gorilla',
    'grasshopper',
    'greyhound',
    'grouse',
    'guppy',
    'hamster',
    'hare',
    'harrier',
    'havanese',
    'hedgehog',
    'heron',
    'hippopotamus',
    'hornet',
    'horse',
    'hound',
    'hummingbird',
    'husky',
    'hyena',
    'hyrax',
    'ibis',
    'iguana',
    'impala',
    'indri',
    'insect',
    'jackal',
    'jaguar',
    'javanese',
    'jellyfish',
    'kakapo',
    'kangaroo',
    'kingfisher',
    'kiwi',
    'koala',
    'kudu',
    'labradoodle',
    'ladybird',
    'lemming',
    'lemur',
    'leopard',
    'liger',
    'lion',
    'lionfish',
    'lizard',
    'llama',
    'lobster',
    'loon',
    'lynx',
    'macaque',
    'macaw',
    'magpie',
    'malamute',
    'maltese',
    'mammoth',
    'manatee',
    'mandrill',
    'markhor',
    'mastiff',
    'mau',
    'mayfly',
    'meerkat',
    'millipede',
    'mist',
    'mole',
    'molly',
    'mongoose',
    'mongrel',
    'monkey',
    'monster',
    'moorhen',
    'moose',
    'moth',
    'mouse',
    'mule',
    'neanderthal',
    'newfoundland',
    'newt',
    'nightingale',
    'numbat',
    'ocelot',
    'octopus',
    'okapi',
    'olm',
    'opossum',
    'orangutan',
    'oriole',
    'ostrich',
    'otter',
    'owl',
    'oyster',
    'panda',
    'paradise',
    'peccary',
    'penguin',
    'pig',
    'pinscher',
    'quail',
    'quetzal',
    'quokka',
    'quoll',
    'rabbit',
    'raccoon',
    'ragdoll',
    'rat',
    'rattlesnake',
    'ray',
    'reindeer',
    'retriever',
    'rhinoceros',
    'robin',
    'rottweiler',
    'russel',
    'salamander',
    'saola',
    'schnauzer',
    'scorpion',
    'seahorse',
    'seal',
    'serval',
    'setter',
    'shark',
    'sheep',
    'sheepdog',
    'shrew',
    'shrimp',
    'skunk',
    'sloth',
    'slug',
    'snail',
    'snake',
    'spaniel',
    'sparrow',
    'spider',
    'spitz',
    'sponge',
    'spoonbill',
    'squid',
    'squirrel',
    'squirt',
    'starfish',
    'stingray',
    'stoat',
    'swan',
    'tamarin',
    'tang',
    'tapir',
    'tarantula',
    'tarsier',
    'termite',
    'terrier',
    'tetra',
    'tiger',
    'toad',
    'tortoise',
    'toucan',
    'tuatara',
    'turkey',
    'turtle',
    'tzu',
    'uakari',
    'uguisu',
    'urchin',
    'vole',
    'vulture',
    'wallaby',
    'walrus',
    'warthog',
    'wasp',
    'weasel',
    'whale',
    'whippet',
    'wildebeest',
    'wolf',
    'wolfhound',
    'wolverine',
    'wombat',
    'woodlouse',
    'woodpecker',
    'worm',
    'wrasse',
    'yak',
    'zebra',
    'zebu',
    'zonkey',
    'zorse'
]


def gen(repeatParts=False,
        separator='-',
        lists=(LEFT, RIGHT),
        number=True,
        ):
    name = []
    for word in lists:
        part = None
        while not part or (part in name and not repeatParts):
            part = random.choice(word)
        name.append(part)
    if number:
        num = str(random.randint(0, 9))
        name.append(num)

    return separator.join(name)
