# -*- coding: utf-8 -*-
import re
import sys

LATIN_TO_CYRILLIC = {
    'a': 'а', 'A': 'А',
    'b': 'б', 'B': 'Б',
    'd': 'д', 'D': 'Д',
    'e': 'е', 'E': 'Е',
    'f': 'ф', 'F': 'Ф',
    'g': 'г', 'G': 'Г',
    'h': 'ҳ', 'H': 'Ҳ',
    'i': 'и', 'I': 'И',
    'j': 'ж', 'J': 'Ж',
    'k': 'к', 'K': 'К',
    'l': 'л', 'L': 'Л',
    'm': 'м', 'M': 'М',
    'n': 'н', 'N': 'Н',
    'o': 'о', 'O': 'О',
    "o'": 'о', "O'": 'O',
    'p': 'п', 'P': 'П',
    'q': 'қ', 'Q': 'Қ',
    'r': 'р', 'R': 'Р',
    's': 'с', 'S': 'С',
    't': 'т', 'T': 'Т',
    'u': 'у', 'U': 'У',
    'v': 'в', 'V': 'В',
    'x': 'х', 'X': 'Х',
    'y': 'й', 'Y': 'Й',
    'z': 'з', 'Z': 'З',
    'ʼ': 'ъ',  # TODO: case?
}
LATIN_VOWELS = (
    'a', 'A', 'e', 'E', 'i', 'I', 'o', 'O', 'u', 'U', 'o‘', 'O‘'
)

# These words cannot be reliably converted to cyrillic because of the lossy
# nature of the to_latin converter.
TS_WORDS = {
    'aberra(ts)ion': 'аберрацион',
    'aberra(ts)iya': 'аберрация',
    'abza(ts)': 'абзац',
    'aboli(ts)iya': 'аболиция',
    'absorb(s)iya': 'абсорбция',
    'abstrak(s)ionizm': 'абстракционизм',
    'abstrak(s)ionist': 'абстракционист',
    'abstrak(s)iya': 'абстракция',
    'abs(s)ess': 'абсцесс',
    'avianose(ts)': 'авианосец',
    'avia(ts)iya': 'авиация',
    'avtoinspek(s)iya': 'автоинспекция',
    'avtopr(s)ep': 'автопрцеп',
    'avtostan(s)iya': 'автостанция',
    'agglyutina(ts)iya': 'агглютинация',
    'agita(ts)ion': 'агитацион',
    'agita(ts)iya': 'агитация',
    'aglomera(ts)iya': 'агломерация',
    'agnosti(ts)izm': 'агностицизм',
    'agromeliora(ts)iya': 'агромелиорация',
    'adapta(ts)iya': 'адаптация',
    'administra(ts)iya': 'администрация',
    'adsorb(s)iya': 'адсорбция',
    'aka(ts)iya': 'акация',
    'akklimatiza(ts)iya': 'акклиматизация',
    'akkomoda(ts)iya': 'аккомодация',
    'akkredita(ts)iya': 'аккредитация',
    'ak(s)ent': 'акцент',
    'ak(s)iz': 'акциз',
    'ak(s)ioner': 'акционер',
    'ak(s)ionerlik': 'акционерлик',
    'ak(s)iya': 'акция',
    'ak(s)iyadorlik': 'акциядорлик',
    'allitera(ts)iya': 'аллитерация',
    'amortiza(ts)iya': 'амортизация',
    'amputa(ts)iya': 'ампутация',
    'annota(ts)iya': 'аннотация',
    'annulya(ts)iya': 'аннуляция',
    'anti(ts)iklon': 'антициклон',
    'antra(ts)it': 'антрацит',
    'apellya(ts)iya': 'апелляция',
    'appendi(ts)it': 'аппендицит',
    'applika(ts)iya': 'аппликация',
    'aproba(ts)iya': 'апробация',
    'argumenta(ts)iya': 'аргументация',
    'assimilya(ts)iya': 'ассимиляция',
    'asso(ts)ia(ts)iya': 'ассоциация',
    'attesta(ts)ion': 'аттестацион',
    'attesta(ts)iya': 'аттестация',
    'attrak(s)ion': 'аттракцион',
    'auk(s)ion': 'аукцион',
    'a(ts)etilen': 'ацетилен',
    'a(ts)eton': 'ацетон',
    'aeronaviga(ts)iya': 'аэронавигация',
    'bakteri(ts)id': 'бактерицид',
    'ba(ts)illar': 'бациллар',
    'bioloka(ts)iya': 'биолокация',
    'biolyumines(s)en(s)iya': 'биолюминесценция',
    'bo(ts)man': 'боцман',
    'bronenose(ts)': 'броненосец',
    'bru(ts)ellyoz': 'бруцеллёз',
    'vak(s)ina': 'вакцина',
    'valva(ts)iya': 'вальвация',
    'vegeta(ts)ion': 'вегетацион',
    'vegeta(ts)iya': 'вегетация',
    'venepunk(s)iya': 'венепункция',
    'ventilya(ts)ion': 'вентиляцион',
    'ventilya(ts)iya': 'вентиляция',
    'vibra(ts)iya': 'вибрация',
    'vibroizolya(ts)iya': 'виброизоляция',
    'vi(ts)e-': 'вице-',
    'vi(ts)e-admiral': 'вице-адмирал',
    'vi(ts)e-prezident': 'вице-президент',
    'vulkaniza(ts)iya': 'вулканизация',
    'galli(ts)izm': 'галлицизм',
    'gallyu(ts)ina(ts)iya': 'галлюцинация',
    'galvaniza(ts)iya': 'гальванизация',
    'gastrol-kon(s)ert': 'гастроль-концерт',
    'gaubi(ts)a': 'гаубица',
    'gelio(ts)entrik': 'гелиоцентрик',
    'geno(ts)id': 'геноцид',
    'geo(ts)entrik': 'геоцентрик',
    'gerbi(ts)idlar': 'гербицидлар',
    'ger(s)': 'герц',
    'ger(s)og': 'герцог',
    'gia(ts)int': 'гиацинт',
    'gidromeliora(ts)iya': 'гидромелиорация',
    'gidromexaniza(ts)iya': 'гидромеханизация',
    'gidrostan(s)iya': 'гидростанция',
    'gidroelektrostan(s)iya': 'гидроэлектростанция',
    'giperinflya(ts)iya': 'гиперинфляция',
    'gipo(ts)entr': 'гипоцентр',
    'gli(ts)erin': 'глицерин',
    'glya(ts)iolog': 'гляциолог',
    'glya(ts)iologiya': 'гляциология',
    'gorchi(ts)a': 'горчица',
    'gravita(ts)iya': 'гравитация',
    'grada(ts)iya': 'градация',
    'guseni(ts)a': 'гусеница',
    'devalva(ts)iya': 'девальвация',
    'degaza(ts)iya': 'дегазация',
    'degenera(ts)iya': 'дегенерация',
    'degustat(s)iya': 'дегустатция',
    'deduk(s)iya': 'дедукция',
    'dezaktiva(ts)iya': 'дезактивация',
    'dezinsek(s)iya': 'дезинсекция',
    'dezinfek(s)iya': 'дезинфекция',
    'dezinfek(s)iyalamoq': 'дезинфекцияламоқ',
    'deklama(ts)iya': 'декламация',
    'deklama(ts)iyachi': 'декламациячи',
    'deklara(ts)iya': 'декларация',
    'dekora(ts)iya': 'декорация',
    'delega(ts)iya': 'делегация',
    'delimita(ts)iya': 'делимитация',
    'demarka(ts)iya': 'демаркация',
    'demilitariza(ts)iya': 'демилитаризация',
    'demobiliza(ts)iya': 'демобилизация',
    'denaturaliza(ts)iya': 'денатурализация',
    'denomina(ts)iya': 'деноминация',
    'denonsa(ts)iya': 'денонсация',
    'depilya(ts)iya': 'депиляция',
    'deporta(ts)iya': 'депортация',
    'deratiza(ts)iya': 'дератизация',
    'deriva(ts)ion': 'деривацион',
    'deriva(ts)iya': 'деривация',
    'desika(ts)iya': 'десикация',
    'detona(ts)iya': 'детонация',
    'defini(ts)iya': 'дефиниция',
    'defi(ts)it': 'дефицит',
    'deflya(ts)iya': 'дефляция',
    'defolia(ts)iya': 'дефолиация',
    'deforma(ts)iya': 'деформация',
    'de(ts)igramm': 'дециграмм',
    'de(ts)ilitr': 'децилитр',
    'de(ts)imetr': 'дециметр',
    'dik(s)iya': 'дикция',
    'direk(s)iya': 'дирекция',
    'diskvalifika(ts)iya': 'дисквалификация',
    'diskrimina(ts)iya': 'дискриминация',
    'disloka(ts)iya': 'дислокация',
    'dispropor(s)iya': 'диспропорция',
    'disserta(ts)iya': 'диссертация',
    'dissimilya(ts)iya': 'диссимиляция',
    'disso(ts)ia(ts)iya': 'диссоциация',
    'distan(s)ion': 'дистанцион',
    'distan(s)iya': 'дистанция',
    'distillya(ts)iya': 'дистилляция',
    'differen(s)ial': 'дифференциал',
    'differen(s)ia(ts)iya': 'дифференциация',
    'differen(s)iyalamoq': 'дифференцияламоқ',
    'dota(ts)iya': 'дотация',
    'do(ts)ent': 'доцент',
    'jinoiy-pro(ts)essual': 'жиноий-процессуал',
    'identifika(ts)iya': 'идентификация',
    'izolya(ts)ion': 'изоляцион',
    'izolya(ts)iya': 'изоляция',
    'izolya(ts)iyalamoq': 'изоляцияламоқ',
    'illyumina(ts)iya': 'иллюминация',
    'illyustra(ts)iya': 'иллюстрация',
    'immigra(ts)iya': 'иммиграция',
    'immobiliza(ts)iya': 'иммобилизация',
    'impoten(s)iya': 'импотенция',
    'improviza(ts)iya': 'импровизация',
    'inaugura(ts)iya': 'инаугурация',
    'inventariza(ts)iya': 'инвентаризация',
    'investi(ts)iya': 'инвестиция',
    'ingalya(ts)iya': 'ингаляция',
    'indeksa(ts)iya': 'индексация',
    'induk(s)ion': 'индукцион',
    'induk(s)iya': 'индукция',
    'iner(s)iya': 'инерция',
    'iner(s)iyali': 'инерцияли',
    'inkvizi(ts)iya': 'инквизиция',
    'inkorpora(ts)iya': 'инкорпорация',
    'inkuba(ts)iya': 'инкубация',
    'innova(ts)iya': 'инновация',
    'inspek(s)iya': 'инспекция',
    'instar(s)iya': 'инстарция',
    'instruk(s)iya': 'инструкция',
    'ins(s)enirovka': 'инсценировка',
    'integra(ts)iya': 'интеграция',
    'intelligen(s)iya': 'интеллигенция',
    'interven(s)iya': 'интервенция',
    'interven(s)iyachi': 'интервенциячи',
    'interna(ts)ional': 'интернационал',
    'interna(ts)ionalizm': 'интернационализм',
    'interna(ts)ionalist': 'интернационалист',
    'intoksika(ts)iya': 'интоксикация',
    'intona(ts)ion': 'интонацион',
    'intona(ts)iya': 'интонация',
    'intui(ts)iya': 'интуиция',
    'infek(s)ion': 'инфекцион',
    'infek(s)iya': 'инфекция',
    'inflya(ts)iya': 'инфляция',
    'informa(ts)ion': 'информацион',
    'informa(ts)iya': 'информация',
    'inʼek(s)iya': 'инъекция',
    'irra(ts)ional': 'иррационал',
    'irriga(ts)ion': 'ирригацион',
    'irriga(ts)iya': 'ирригация',
    'kalkulya(ts)iya': 'калькуляция',
    'kal(s)iy': 'кальций',
    'kanaliza(ts)iya': 'канализация',
    'kan(s)eliyariya': 'канцелиярия',
    'kan(s)erogen': 'канцероген',
    'kan(s)ler': 'канцлер',
    'kapitaliza(ts)iya': 'капитализация',
    'kapitulya(ts)iya': 'капитуляция',
    'kassa(ts)iya': 'кассация',
    'katol(s)izm': 'католцизм',
    'kvalifika(ts)iya': 'квалификация',
    'kvar(s)': 'кварц',
    'kvar(s)it': 'кварцит',
    'kvitan(s)iya': 'квитанция',
    'kinokon(s)ert': 'киноконцерт',
    'kinos(s)enariy': 'киносценарий',
    'klassifika(ts)iya': 'классификация',
    'klassi(ts)izm': 'классицизм',
    'koali(ts)ion': 'коалицион',
    'koali(ts)iya': 'коалиция',
    'kodifika(ts)iya': 'кодификация',
    'kollek(s)ioner': 'коллекционер',
    'kollek(s)iya': 'коллекция',
    'kollek(s)iyachchi': 'коллекцияччи',
    'kolon(s)ifra': 'колонцифра',
    'kombina(ts)iya': 'комбинация',
    'kommer(s)iya': 'коммерция',
    'kommunika(ts)iya': 'коммуникация',
    'kommuta(ts)iya': 'коммутация',
    'kompensa(ts)iya': 'компенсация',
    'kompeten(s)iya': 'компетенция',
    'kompilya(ts)iya': 'компиляция',
    'kompozi(ts)ion': 'композицион',
    'kompozi(ts)iya': 'композиция',
    'konvek(s)iya': 'конвекция',
    'konven(s)iya': 'конвенция',
    'konverta(ts)iya': 'конвертация',
    'kondensa(ts)iya': 'конденсация',
    'kondi(ts)iya': 'кондиция',
    'kondi(ts)ioner': 'кондиционер',
    'konkuren(s)iya': 'конкуренция',
    'konserva(ts)iya': 'консервация',
    'konsigna(ts)iya': 'консигнация',
    'konsolida(ts)iya': 'консолидация',
    'konsor(s)ium': 'консорциум',
    'konspira(ts)iya': 'конспирация',
    'konstitu(ts)ion': 'конституцион',
    'konstitu(ts)iya': 'конституция',
    'konstitu(ts)iyaviy': 'конституциявий',
    'konstruk(s)iya': 'конструкция',
    'konsulta(ts)iya': 'консультация',
    'kontrakta(ts)iya': 'контрактация',
    'kontribu(ts)iya': 'контрибуция',
    'kontrrevolyu(ts)ion': 'контрреволюцион',
    'kontrrevolyu(ts)ioner': 'контрреволюционер',
    'kontrrevolyu(ts)iya': 'контрреволюция',
    'konfedera(ts)iya': 'конфедерация',
    'konferen(s)-zal': 'конференц-зал',
    'konferen(s)iya': 'конференция',
    'konfiska(ts)iya': 'конфискация',
    'konfronta(ts)iya': 'конфронтация',
    'konfu(ts)iylik': 'конфуцийлик',
    'konfu(ts)iychilik': 'конфуцийчилик',
    'kon(s)entrat': 'концентрат',
    'kon(s)entratli': 'концентратли',
    'kon(s)entra(ts)ion': 'концентрацион',
    'kon(s)entra(ts)iya': 'концентрация',
    'kon(s)entra(ts)iyalashmoq': 'концентрациялашмоқ',
    'kon(s)entrik': 'концентрик',
    'kon(s)ep(s)iya': 'концепция',
    'kon(s)ern': 'концерн',
    'kon(s)ert': 'концерт',
    'kon(s)ertmeyster': 'концертмейстер',
    'kon(s)essiya': 'концессия',
    'kon(s)lager': 'концлагерь',
    'koopera(ts)iya': 'кооперация',
    'koopta(ts)iya': 'кооптация',
    'koordina(ts)ion': 'координацион',
    'koordina(ts)iya': 'координация',
    'korpora(ts)iya': 'корпорация',
    'korrelya(ts)iya': 'корреляция',
    'korresponden(s)iya': 'корреспонденция',
    'korrup(s)iya': 'коррупция',
    'koeffi(ts)iyent': 'коэффициент',
    'krema(ts)iya': 'кремация',
    'kristalliza(ts)iya': 'кристаллизация',
    'kulmina(ts)ion': 'кульминацион',
    'kulmina(ts)iya': 'кульминация',
    'kultiva(ts)iya': 'культивация',
    'lakta(ts)iya': 'лактация',
    'lamina(ts)iya': 'ламинация',
    'lan(s)et': 'ланцет',
    'levomi(ts)etin': 'левомицетин',
    'legitima(ts)iya': 'легитимация',
    'leyko(ts)itlar': 'лейкоцитлар',
    'leyko(ts)itoz': 'лейкоцитоз',
    'lek(s)iya': 'лекция',
    'liberaliza(ts)iya': 'либерализация',
    'li(ts)ey': 'лицей',
    'li(ts)enziya': 'лицензия',
    'lokaliza(ts)iya': 'локализация',
    'loka(ts)iya': 'локация',
    'lo(ts)man': 'лоцман',
    'lyumenis(s)en(s)iya': 'люменисценция',
    'lyute(ts)iy': 'лютеций',
    'manipulya(ts)iya': 'манипуляция',
    'margane(ts)': 'марганец',
    'matri(ts)a': 'матрица',
    'medi(ts)ina': 'медицина',
    'meliora(ts)iya': 'мелиорация',
    'menstrua(ts)iya': 'менструация',
    'metalliza(ts)iya': 'металлизация',
    'metiza(ts)iya': 'метизация',
    'mexaniza(ts)iya': 'механизация',
    'mexaniza(ts)iyalash': 'механизациялаш',
    'mexaniza(ts)iyalashmoq': 'механизациялашмоқ',
    'mexani(ts)izm': 'механицизм',
    'migra(ts)iya': 'миграция',
    'mizans(s)ena': 'мизансцена',
    'militariza(ts)iya': 'милитаризация',
    'mili(ts)ioner': 'милиционер',
    'mili(ts)iya': 'милиция',
    'mili(ts)iyaxona': 'милицияхона',
    'mineraliza(ts)iya': 'минерализация',
    'minonose(ts)': 'миноносец',
    'misti(ts)izm': 'мистицизм',
    'mobiliza(ts)iya': 'мобилизация',
    'moderniza(ts)iya': 'модернизация',
    'moderniza(ts)iyalamoq': 'модернизацияламоқ',
    'modifika(ts)iya': 'модификация',
    'moto(ts)ikl': 'мотоцикл',
    'moto(ts)iklet': 'мотоциклет',
    'moto(ts)ikletchi': 'мотоциклетчи',
    'moto(ts)iklli': 'мотоциклли',
    'moto(ts)iklchi': 'мотоциклчи',
    'multiplika(ts)ion': 'мультипликацион',
    'multiplika(ts)iya': 'мультипликация',
    'muni(ts)ipaliza(ts)iya': 'муниципализация',
    'muni(ts)ipalitet': 'муниципалитет',
    'naviga(ts)iya': 'навигация',
    'naturaliza(ts)iya': 'натурализация',
    'na(ts)ionaliza(ts)iya': 'национализация',
    'nene(ts)': 'ненец',
    'nene(ts)lar': 'ненецлар',
    'nitrogli(ts)erin': 'нитроглицерин',
    'nomina(ts)iya': 'номинация',
    'nostrifika(ts)iya': 'нострификация',
    'nullifika(ts)iya': 'нуллификация',
    'obliga(ts)iya': 'облигация',
    'obroga(ts)iya': 'оброгация',
    'observa(ts)iya': 'обсервация',
    'okkupa(ts)ion': 'оккупацион',
    'okkupa(ts)iya': 'оккупация',
    'okkupa(ts)iyachi': 'оккупациячи',
    'opera(ts)iya': 'операция',
    'opera(ts)iyaviy': 'операциявий',
    'oppozo(ts)ion': 'оппозоцион',
    'oppozi(ts)iya': 'оппозиция',
    'oppozi(ts)iyachi': 'оппозициячи',
    'op(s)ion': 'опцион',
    'ordinare(ts)': 'ординарец',
    'oriyenta(ts)iya': 'ориентация',
    'osteomalya(ts)iya': 'остеомаляция',
    'ofi(ts)er': 'офицер',
    'ofi(ts)iant': 'официант',
    'ofi(ts)iantka': 'официантка',
    'palpa(ts)iya': 'пальпация',
    'pa(ts)iyent': 'пациент',
    'pa(ts)ifizm': 'пацифизм',
    'pa(ts)ifist': 'пацифист',
    'peni(ts)(s)ilin': 'пениццилин',
    'pesti(ts)idlar': 'пестицидлар',
    'peti(ts)iya': 'петиция',
    'petli(ts)a': 'петлица',
    'pigmenta(ts)iya': 'пигментация',
    'pin(s)et': 'пинцет',
    'pi(ts)(s)a': 'пицца',
    'planta(ts)iya': 'плантация',
    'pla(ts)darm': 'плацдарм',
    'pla(ts)kart': 'плацкарт',
    'pla(ts)karta': 'плацкарта',
    'pla(ts)kartali': 'плацкартали',
    'plebis(s)it': 'плебисцит',
    'podstan(s)iya': 'подстанция',
    'pozi(ts)ion': 'позицион',
    'pozi(ts)iya': 'позиция',
    'poli(ts)iya': 'полиция',
    'poli(ts)iyachi': 'полициячи',
    'poli(ts)meyster': 'полицмейстер',
    'pollyu(ts)iya': 'поллюция',
    'populya(ts)iya': 'популяция',
    'por(s)iya': 'порция',
    'poten(s)ial': 'потенциал',
    'prezenta(ts)iya': 'презентация',
    'press-konferen(s)iya': 'пресс-конференция',
    'preferen(s)iya': 'преференция',
    'privatiza(ts)iya': 'приватизация',
    'prin(s)ip': 'принцип',
    'prin(s)ipial': 'принципиал',
    'prin(s)ipiallik': 'принципиаллик',
    'prin(s)ipli': 'принципли',
    'prin(s)ipsiz': 'принципсиз',
    'pri(ts)ep': 'прицеп',
    'provin(s)ializm': 'провинциализм',
    'provin(s)iya': 'провинция',
    'provoka(ts)iya': 'провокация',
    'proyek(s)iya': 'проекция',
    'proyek(s)iyalamoq': 'проекцияламоқ',
    'proklama(ts)iya': 'прокламация',
    'prolonga(ts)iya': 'пролонгация',
    'propor(s)ional': 'пропорционал',
    'propor(s)ionallik': 'пропорционаллик',
    'propor(s)iya': 'пропорция',
    'protek(s)ionizm': 'протекционизм',
    'pro(ts)ent': 'процент',
    'pro(ts)entli': 'процентли',
    'pro(ts)entchi': 'процентчи',
    'pro(ts)ess': 'процесс',
    'pro(ts)essor': 'процессор',
    'pro(ts)essual': 'процессуал',
    'publi(ts)ist': 'публицист',
    'publi(ts)istik': 'публицистик',
    'publi(ts)istika': 'публицистика',
    'punktua(ts)ion': 'пунктуацион',
    'punktua(ts)iya': 'пунктуация',
    'punk(s)iya': 'пункция',
    'radia(ts)ion': 'радиацион',
    'radia(ts)iya': 'радиация',
    'radioloka(ts)iya': 'радиолокация',
    'radionaviga(ts)iya': 'радионавигация',
    'radiostan(s)iya': 'радиостанция',
    'rane(ts)': 'ранец',
    'ratifika(ts)iya': 'ратификация',
    'rafina(ts)iya': 'рафинация',
    'rafina(ts)iyalash': 'рафинациялаш',
    'ra(ts)ion': 'рацион',
    'ra(ts)ional': 'рационал',
    'ra(ts)ionalizator': 'рационализатор',
    'ra(ts)ionalizatorlik': 'рационализаторлик',
    'ra(ts)ionaliza(ts)iya': 'рационализация',
    'ra(ts)ionalizm': 'рационализм',
    'ra(ts)ionalist': 'рационалист',
    'ra(ts)ionlallashmoq': 'рационлаллашмоқ',
    'ra(ts)iya': 'рация',
    'reabilita(ts)iya': 'реабилитация',
    'reak(s)ion': 'реакцион',
    'reak(s)ioner': 'реакционер',
    'reak(s)iya': 'реакция',
    'reak(s)iyachi': 'реакциячи',
    'realiza(ts)iya': 'реализация',
    'reanima(ts)iya': 'реанимация',
    'revalva(ts)iya': 'ревальвация',
    'revolyu(ts)ion': 'революцион',
    'revolyu(ts)ioner': 'революционер',
    'revolyu(ts)iya': 'революция',
    'regenera(ts)iya': 'регенерация',
    'registra(ts)iya': 'регистрация',
    'redak(s)ion': 'редакцион',
    'redak(s)iya': 'редакция',
    'reduk(s)iya': 'редукция',
    'reduplika(ts)iya': 'редупликация',
    'rezek(s)iya': 'резекция',
    'reziden(s)iya': 'резиденция',
    'rezolyu(ts)iya': 'резолюция',
    'reinvesti(ts)iya': 'реинвестиция',
    'rekvizi(ts)iya': 'реквизиция',
    'reklama(ts)iya': 'рекламация',
    'rekognos(s)irovka': 'рекогносцировка',
    'rekomenda(ts)iya': 'рекомендация',
    'rekonstruk(s)iya': 'реконструкция',
    'rekonstruk(s)iyalamoq': 'реконструкцияламоқ',
    'remilitariza(ts)iya': 'ремилитаризация',
    'repara(ts)iya': 'репарация',
    'repatri(ts)iya': 'репатриция',
    'repeti(ts)iya': 'репетиция',
    'reprivatiza(ts)iya': 'реприватизация',
    'reproduk(s)iya': 'репродукция',
    'restavra(ts)iya': 'реставрация',
    'retranslya(ts)iya': 'ретрансляция',
    'reforma(ts)iya': 'реформация',
    'refrak(s)iya': 'рефракция',
    're(ts)enzent': 'рецензент',
    're(ts)enziya': 'рецензия',
    're(ts)ept': 'рецепт',
    're(ts)eptorlar': 'рецепторлар',
    're(ts)idiv': 'рецидив',
    're(ts)idivist': 'рецидивист',
    're(ts)ipiyent': 'реципиент',
    'reevakua(ts)iya': 'реэвакуация',
    'reemigra(ts)iya': 'реэмиграция',
    'ri(ts)arlik': 'рицарлик',
    'ri(ts)ar': 'рицарь',
    'rota(ts)ion': 'ротацион',
    'sana(ts)iya': 'санация',
    'sana(ts)iyalash': 'санациялаш',
    'sank(s)iya': 'санкция',
    'sekre(ts)iya': 'секреция',
    'sek(s)iya': 'секция',
    'selek(s)ion': 'селекцион',
    'selek(s)iya': 'селекция',
    'selek(s)iyachi': 'селекциячи',
    'selek(s)iyachilik': 'селекциячилик',
    'sensa(ts)ion': 'сенсацион',
    'sensa(ts)iya': 'сенсация',
    'signaliza(ts)iya': 'сигнализация',
    'sili(ts)iy': 'силиций',
    'situa(ts)iya': 'ситуация',
    'skepti(ts)izm': 'скептицизм',
    'slane(ts)': 'сланец',
    'so(ts)ial': 'социал',
    'so(ts)ial-demokrat': 'социал-демократ',
    'so(ts)ial-demokratik': 'социал-демократик',
    'so(ts)ial-demokratiya': 'социал-демократия',
    'so(ts)ializa(ts)iya': 'социализация',
    'so(ts)ializm': 'социализм',
    'so(ts)ialist': 'социалист',
    'so(ts)ialistik': 'социалистик',
    'so(ts)iolingvistika': 'социолингвистика',
    'so(ts)iolog': 'социолог',
    'so(ts)iologik': 'социологик',
    'so(ts)iologiya': 'социология',
    'spekulya(ts)iya': 'спекуляция',
    'spe(ts)ifik': 'специфик',
    'spe(ts)ifika': 'специфика',
    'spe(ts)ifika(ts)iya': 'спецификация',
    'stabiliza(ts)iya': 'стабилизация',
    'stan(s)iya': 'станция',
    'sta(ts)ionar': 'стационар',
    'steriliza(ts)iya': 'стерилизация',
    'stoi(ts)izm': 'стоицизм',
    'stron(s)iy': 'стронций',
    'substan(s)iya': 'субстанция',
    's(s)enariy': 'сценарий',
    's(s)enariychi': 'сценарийчи',
    's(s)enarist': 'сценарист',
    'tabli(ts)a': 'таблица',
    'tan(s)a': 'танца',
    'teleins(s)enirovka': 'телеинсценировка',
    'telekommunika(ts)iya': 'телекоммуникация',
    'telemexaniza(ts)iya': 'телемеханизация',
    'tenden(s)ioz': 'тенденциоз',
    'tenden(s)iozlik': 'тенденциозлик',
    'tenden(s)iya': 'тенденция',
    'tepli(ts)a': 'теплица',
    'teploizolya(ts)iya': 'теплоизоляция',
    'termoizolya(ts)iya': 'термоизоляция',
    'ter(s)et': 'терцет',
    'ter(s)iya': 'терция',
    'texne(ts)iy': 'технеций',
    'tradi(ts)ion': 'традицион',
    'tradi(ts)iya': 'традиция',
    'transkrip(s)ion': 'транскрипцион',
    'transkrip(s)iya': 'транскрипция',
    'transkrip(s)iyalamoq': 'транскрипцияламоқ',
    'translitera(ts)iya': 'транслитерация',
    'translya(ts)ion': 'трансляцион',
    'translya(ts)iya': 'трансляция',
    'transplanta(ts)iya': 'трансплантация',
    'transforma(ts)iya': 'трансформация',
    'transforma(ts)iyalamoq': 'трансформацияламоқ',
    'trape(ts)iya': 'трапеция',
    'trepana(ts)iya': 'трепанация',
    'uborshi(ts)a': 'уборшица',
    'uzurpa(ts)iya': 'узурпация',
    'unifika(ts)iya': 'унификация',
    'unifika(ts)iyalashtirmoq': 'унификациялаштирмоқ',
    'unter-ofi(ts)er': 'унтер-офицер',
    'urbaniza(ts)iya': 'урбанизация',
    'fago(ts)it': 'фагоцит',
    'falsifika(ts)iya': 'фальсификация',
    'farma(ts)evt': 'фармацевт',
    'farma(ts)evtika': 'фармацевтика',
    'farma(ts)iya': 'фармация',
    'federa(ts)iya': 'федерация',
    'fermenta(ts)iya': 'ферментация',
    'film-kon(s)ert': 'фильм-концерт',
    'filtra(ts)iya': 'фильтрация',
    'fiton(s)id': 'фитонцид',
    'forma(ts)iya': 'формация',
    'frak(s)ion': 'фракцион',
    'frak(s)iooner': 'фракциоонер',
    'frak(s)iya': 'фракция',
    'fran(s)iya': 'франция',
    'fran(s)uz': 'француз',
    'fran(s)uzlar': 'французлар',
    'fran(s)uzcha': 'французча',
    'fri(ts)': 'фриц',
    'funk(s)ional': 'функционал',
    'funk(s)iya': 'функция',
    'xemosorb(s)iya': 'хемосорбция',
    'xole(ts)istit': 'холецистит',
    '(s)anga': 'цанга',
    '(s)apfa': 'цапфа',
    '(s)edra': 'цедра',
    '(s)eziy': 'цезий',
    '(s)eytnot': 'цейтнот',
    '(s)ellofan': 'целлофан',
    '(s)elluloid': 'целлулоид',
    '(s)ellyuloza': 'целлюлоза',
    '(s)elsiy': 'цельсий',
    '(s)ement': 'цемент',
    '(s)ementlamoq': 'цементламоқ',
    '(s)enz': 'ценз',
    '(s)enzor': 'цензор',
    '(s)enzura': 'цензура',
    '(s)ent': 'цент',
    '(s)entner': 'центнер',
    '(s)entnerli': 'центнерли',
    '(s)entnerchi': 'центнерчи',
    '(s)entralizm': 'централизм',
    '(s)entrizm': 'центризм',
    '(s)entrist': 'центрист',
    '(s)entrifuga': 'центрифуга',
    '(s)eriy': 'церий',
    '(s)esarka': 'цесарка',
    '(s)ex': 'цех',
    '(s)ian': 'циан',
    '(s)ianli': 'цианли',
    '(s)iviliza(ts)iya': 'цивилизация',
    '(s)igara': 'цигара',
    '(s)ikl': 'цикл',
    '(s)iklik': 'циклик',
    '(s)ikllashtirmoq': 'цикллаштирмоқ',
    '(s)iklli': 'циклли',
    '(s)iklon': 'циклон',
    '(s)iklotron': 'циклотрон',
    '(s)ilindr': 'цилиндр',
    '(s)ilindrik': 'цилиндрик',
    '(s)ilindrli': 'цилиндрли',
    '(s)inga': 'цинга',
    '(s)ink': 'цинк',
    '(s)inkograf': 'цинкограф',
    '(s)inkografiya': 'цинкография',
    '(s)irk': 'цирк',
    '(s)irkoniy': 'цирконий',
    '(s)irkul': 'циркуль',
    '(s)irkulyar': 'циркуляр',
    '(s)irkchi': 'циркчи',
    '(s)irroz': 'цирроз',
    '(s)isterna': 'цистерна',
    '(s)isternali': 'цистернали',
    '(s)istit': 'цистит',
    '(s)itata': 'цитата',
    '(s)itatabozlik': 'цитатабозлик',
    '(s)ito-': 'цито-',
    '(s)itodiagnostika': 'цитодиагностика',
    '(s)itokimyo': 'цитокимё',
    '(s)itoliz': 'цитолиз',
    '(s)itologiya': 'цитология',
    '(s)itrus': 'цитрус',
    '(s)iferblat': 'циферблат',
    '(s)iferblatli': 'циферблатли',
    '(s)okol': 'цоколь',
    '(s)unami': 'цунами',
    'cherepi(ts)a': 'черепица',
    'shvey(s)ar': 'швейцар',
    'shmu(ts)titul': 'шмуцтитул',
    'shni(ts)el': 'шницель',
    'shpri(ts)': 'шприц',
    'shtangen(s)irkul': 'штангенциркуль',
    'evakua(ts)iya': 'эвакуация',
    'evolyu(ts)ion': 'эволюцион',
    'evolyu(ts)iya': 'эволюция',
    'ego(ts)entrizm': 'эгоцентризм',
    'eksguma(ts)iya': 'эксгумация',
    'ekspedi(ts)ion': 'экспедицион',
    'ekspedi(ts)iya': 'экспедиция',
    'ekspedi(ts)iyachi': 'экспедициячи',
    'ekspluata(ts)iya': 'эксплуатация',
    'ekspluata(ts)iyachi': 'эксплуатациячи',
    'ekspozi(ts)iya': 'экспозиция',
    'ekspropria(ts)iya': 'экспроприация',
    'ekstradi(ts)iya': 'экстрадиция',
    'ekstrak(s)iya': 'экстракция',
    'elektrifika(ts)iya': 'электрификация',
    'elektrostan(s)iya': 'электростанция',
    'emansipa(ts)iya': 'эмансипация',
    'emigra(ts)iya': 'эмиграция',
    'emo(ts)ional': 'эмоционал',
    'emo(ts)ionallik': 'эмоционаллик',
    'emo(ts)iya': 'эмоция',
    'empiriokriti(ts)izm': 'эмпириокритицизм',
    'en(s)efalit': 'энцефалит',
    'en(s)efalogramma': 'энцефалограмма',
    'en(s)iklopedik': 'энциклопедик',
    'en(s)iklopedist': 'энциклопедист',
    'en(s)iklopediya': 'энциклопедия',
    'en(s)iklopediyachi': 'энциклопедиячи',
    'epi(ts)entr': 'эпицентр',
    'eritro(ts)itlar': 'эритроцитлар',
    'erudi(ts)iya': 'эрудиция',
    'eskala(ts)iya': 'эскалация',
    'esmine(ts)': 'эсминец',
    'essen(s)iya': 'эссенция',
    'yurisdik(s)iya': 'юрисдикция',
    'yurispruden(s)iya': 'юриспруденция',
    'yusti(ts)iya': 'юстиция',
}
# These words cannot be reliably transliterated into cyrillic
E_WORDS = {
    'bel(e)taj': 'бельэтаж',
    'bugun-(e)rta': 'бугун-эрта',
    'diqqat-(e)ʼtibor': 'диққат-эътибор',
    'ich-(e)t': 'ич-эт',
    'karat(e)': 'каратэ',
    'm(e)r': 'мэр',
    'obroʻ-(e)ʼtiborli': 'обрў-эътиборли',
    'omon-(e)son': 'омон-эсон',
    'r(e)ket': 'рэкет',
    'sut(e)mizuvchilar': 'сутэмизувчилар',
    'upa-(e)lik': 'упа-элик',
    'xayr-(e)hson': 'хайр-эҳсон',
    'qayn(e)gachi': 'қайнэгачи',
}
# Not to confuse with ш
SH_WORDS = {
    'a(sh)ob': 'асҳоб',
    'mu(sh)af': 'мусҳаф'
}
# Not to confuse with ё
YO_WORDS = {
    'general-ma(yo)r': 'генерал-майор',
    '(yo)g': 'йог',
    '(yo)ga': 'йога',
    '(yo)gurt': 'йогурт',
    '(yo)d': 'йод',
    '(yo)dlamoq': 'йодламоқ',
    '(yo)dli': 'йодли',
    'ma(yo)nez': 'майонез',
    'mikrorayon': 'микрорайон',
    'ma(yo)r': 'майор',
    'ra(yo)n': 'район',
}
YU_WORDS = {
    'mo(yu)pa': 'мойупа',
    'po(yu)stun': 'пойустун'
}
YA_WORDS = {
    'po(ya)bzal': 'пойабзал',
    'po(ya)ndoz': 'пойандоз',
    'po(ya)fzal': 'пойафзал'
}
YE_WORDS = {
    'i(ye)': 'ийе',
    'konve(ye)r': 'конвейер',
    'ple(ye)r': 'плейер',
    'sta(ye)r': 'стайер',
    'fo(ye)': 'фойе'
}
SOFT_SIGN_WORDS = {
    'aviamodel': 'авиамодель',
    'avtomagistralavtomat': 'автомагистральавтомат',
    'avtomobil': 'автомобиль',
    'akvarel': 'акварель',
    'alkogol': 'алкоголь',
    'albatros': 'альбатрос',
    'albom': 'альбом',
    'alpinizm': 'альпинизм',
    'alpinist': 'альпинист',
    'alt': 'альт',
    'alternativ': 'альтернатив',
    'alternativa': 'альтернатива',
    'altimetr': 'альтиметр',
    'altchi': 'альтчи',
    'alfa': 'альфа',
    'alfa-zarralar': 'альфа-зарралар',
    'alma-terapiya': 'альма-терапия',
    'alyans': 'альянс',
    'amalgama': 'амальгама',
    'ansambl': 'ансамбль',
    'apelsin': 'апельсин',
    'aprel': 'апрель',
    'artel': 'артель',
    'artikl': 'артикль',
    'arergard': 'арьергард',
    'asfalt': 'асфальт',
    'asfaltlamoq': 'асфальтламоқ',
    'asfaltli': 'асфальтли',
    'atele': 'ателье',
    'bazalt': 'базальт',
    'balzam': 'бальзам',
    'balzamlash': 'бальзамлаш',
    'balneolog': 'бальнеолог',
    'balneologik': 'бальнеологик',
    'balneologiya': 'бальнеология',
    'balneoterapiya': 'бальнеотерапия',
    'balneotexnika': 'бальнеотехника',
    'banderol': 'бандероль',
    'barelef': 'барельеф',
    'barrel': 'баррель',
    'barer': 'барьер',
    'batalon': 'батальон',
    'belveder': 'бельведер',
    'belgiyalik': 'бельгиялик',
    'belting': 'бельтинг',
    'beletaj': 'бельэтаж',
    'bilyard': 'бильярд',
    'binokl': 'бинокль',
    'biofiltr': 'биофильтр',
    'bolonya': 'болонья',
    'bolshevizm': 'большевизм',
    'bolshevik': 'большевик',
    'brakonerlik': 'браконьерлик',
    'broneavtomobil': 'бронеавтомобиль',
    'bron': 'бронь',
    'budilnik': 'будильник',
    'bulvar': 'бульвар',
    'buldenej': 'бульденеж',
    'buldog': 'бульдог',
    'buldozer': 'бульдозер',
    'buldozerchi': 'бульдозерчи',
    'bulon': 'бульон',
    'byulleten': 'бюллетень',
    'valeryanka': 'валерьянка',
    'valvatsiya': 'вальвация',
    'vals': 'вальс',
    'vanil': 'ваниль',
    'varete': 'варьете',
    'vedomost': 'ведомость',
    'veksel': 'вексель',
    'ventil': 'вентиль',
    'vermishel': 'вермишель',
    'verner': 'верньер',
    'verf': 'верфь',
    'vestibyul': 'вестибюль',
    'videofilm': 'видеофильм',
    'viklyuchatel': 'виключатель',
    'vinetka': 'виньетка',
    'violonchel': 'виолончель',
    'vklyuchatel': 'включатель',
    'vodevil': 'водевиль',
    'volost': 'волость',
    'volt': 'вольт',
    'volta': 'вольта',
    'voltli': 'вольтли',
    'voltmetr': 'вольтметр',
    'volfram': 'вольфрам',
    'vulgar': 'вульгар',
    'vulgarizm': 'вульгаризм',
    'vulgarlashtirmoq': 'вульгарлаштирмоқ',
    'gavan': 'гавань',
    'galvanizatsiya': 'гальванизация',
    'galvanik': 'гальваник',
    'galvanometr': 'гальванометр',
    'gantel': 'гантель',
    'garmon': 'гармонь',
    'gastrol': 'гастроль',
    'gastrol-konsert': 'гастроль-концерт',
    'gelmint': 'гельминт',
    'gelmintoz': 'гельминтоз',
    'gelmintologiya': 'гельминтология',
    'geraldika': 'геральдика',
    'gilza': 'гильза',
    'giposulfit': 'гипосульфит',
    'golf': 'гольф',
    'gorelef': 'горельеф',
    'gorizontal': 'горизонталь',
    'gospital': 'госпиталь',
    'grifel': 'грифель',
    'guash': 'гуашь',
    'daltonizm': 'дальтонизм',
    'dvigatel': 'двигатель',
    'devalvatsiya': 'девальвация',
    'dekabr': 'декабрь',
    'delta': 'дельта',
    'delfin': 'дельфин',
    'delfinariy': 'дельфинарий',
    'delfinsimonlar': 'дельфинсимонлар',
    'detal': 'деталь',
    'diagonal': 'диагональ',
    'diafilm': 'диафильм',
    'dizel': 'дизель',
    'dizel-motor': 'дизель-мотор',
    'dirijabl': 'дирижабль',
    'drel': 'дрель',
    'duel': 'дуэль',
    'jenshen': 'женьшень',
    'impuls': 'импульс',
    'inventar': 'инвентарь',
    'insult': 'инсульт',
    'intervyu': 'интервью',
    'interer': 'интерьер',
    'italyan': 'итальян',
    'italyanlar': 'итальянлар',
    'italyancha': 'итальянча',
    'iyul': 'июль',
    'iyun': 'июнь',
    'kabel': 'кабель',
    'kalendar': 'календарь',
    'kalka': 'калька',
    'kalkalamoq': 'калькаламоқ',
    'kalkulyator': 'калькулятор',
    'kalkulyatsiya': 'калькуляция',
    'kalsiy': 'кальций',
    'kanifol': 'канифоль',
    'kapelmeyster': 'капельмейстер',
    'kapsyul': 'капсюль',
    'karamel': 'карамель',
    'kartel': 'картель',
    'kartech': 'картечь',
    'karusel': 'карусель',
    'karer': 'карьер',
    'kastryul': 'кастрюль',
    'kastryulka': 'кастрюлька',
    'katapulta': 'катапульта',
    'kafel': 'кафель',
    'kinofestival': 'кинофестиваль',
    'kinofilm': 'кинофильм',
    'kisel': 'кисель',
    'kitel': 'китель',
    'knyaz': 'князь',
    'kobalt': 'кобальт',
    'kokil': 'кокиль',
    'kokteyl': 'коктейль',
    'kompyuter': 'компьютер',
    'kompyuterlashtirmoq': 'компьютерлаштирмоқ',
    'konsultant': 'консультант',
    'konsultativ': 'консультатив',
    'konsultatsiya': 'консультация',
    'kontrol': 'контроль',
    'konferanse': 'конферансье',
    'konslager': 'концлагерь',
    'kon': 'конь',
    'konki': 'коньки',
    'konkichi': 'конькичи',
    'konyunktiva': 'коньюнктива',
    'konyunktivit': 'коньюнктивит',
    'konyunktura': 'коньюнктура',
    'konyak': 'коньяк',
    'korol': 'король',
    'kreml': 'кремль',
    'krovat': 'кровать',
    'kulminatsion': 'кульминацион',
    'kulminatsiya': 'кульминация',
    'kultivator': 'культиватор',
    'kultivatsiya': 'культивация',
    'kulturizm': 'культуризм',
    'kurer': 'курьер',
    'kyat': 'кьят',
    'lager': 'лагерь',
    'latun': 'латунь',
    'losos': 'лосось',
    'loson': 'лосьон',
    'magistral': 'магистраль',
    'marseleza': 'марсельеза',
    'mebel': 'мебель',
    'medal': 'медаль',
    'medalon': 'медальон',
    'melxior': 'мельхиор',
    'menshevizm': 'меньшевизм',
    'menshevik': 'меньшевик',
    'migren': 'мигрень',
    'mikroinsult': 'микроинсульт',
    'mikrofilm': 'микрофильм',
    'model': 'модель',
    'modeler': 'модельер',
    'molbert': 'мольберт',
    'monastir': 'монастирь',
    'monokultoura': 'монокультоура',
    'motel': 'мотель',
    'multi-': 'мульти-',
    'multimediya': 'мультимедия',
    'multimillioner': 'мультимиллионер',
    'multiplikatsion': 'мультипликацион',
    'multiplikator': 'мультипликатор',
    'multiplikatsiya': 'мультипликация',
    'neft': 'нефть',
    'nikel': 'никель',
    'nimpalto': 'нимпальто',
    'nippel': 'ниппель',
    'nol': 'ноль',
    'normal': 'нормаль',
    'noyabr': 'ноябрь',
    'oblast': 'область',
    'okkultizm': 'оккультизм',
    'oktabr': 'октябрь',
    'otel': 'отель',
    'oftalmologiya': 'офтальмология',
    'ochered': 'очередь',
    'pavilon': 'павильон',
    'palma': 'пальма',
    'palmazor': 'пальмазор',
    'palpatsiya': 'пальпация',
    'palto': 'пальто',
    'paltobop': 'пальтобоп',
    'paltolik': 'пальтолик',
    'panel': 'панель',
    'parallel': 'параллель',
    'parol': 'пароль',
    'patrul': 'патруль',
    'pedal': 'педаль',
    'penalti': 'пенальти',
    'pechat': 'печать',
    'pechene': 'печенье',
    'pech': 'печь',
    'plastir': 'пластирь',
    'povest': 'повесть',
    'polka': 'полька',
    'portfel': 'портфель',
    'porshen': 'поршень',
    'pochtalon': 'почтальон',
    'predoxranitel': 'предохранитель',
    'premera': 'премьера',
    'premer-ministr': 'премьер-министр',
    'press-pape': 'пресс-папье',
    'press-sekretar': 'пресс-секретарь',
    'pristan': 'пристань',
    'profil': 'профиль',
    'pulverizator': 'пульверизатор',
    'pulmonologiya': 'пульмонология',
    'pulpa': 'пульпа',
    'pulpit': 'пульпит',
    'puls': 'пульс',
    'pult': 'пульт',
    'pesa': 'пьеса',
    'radiospektakl': 'радиоспектакль',
    'rante': 'рантье',
    'revalvatsiya': 'ревальвация',
    'revolver': 'револьвер',
    'rezba': 'резьба',
    'rezbali': 'резьбали',
    'relef': 'рельеф',
    'rels': 'рельс',
    'relsli': 'рельсли',
    'relssiz': 'рельссиз',
    'retush': 'ретушь',
    'riyel': 'риель',
    'ritsar': 'рицарь',
    'rol': 'роль',
    'royal': 'рояль',
    'rubilnik': 'рубильник',
    'rubl': 'рубль',
    'rul': 'руль',
    'saldo': 'сальдо',
    'salto': 'сальто',
    'sekretar': 'секретарь',
    'selderey': 'сельдерей',
    'seld': 'сельдь',
    'sentabr': 'сентябрь',
    'senor': 'сеньор',
    'senora': 'сеньора',
    'sinka': 'синька',
    'sinkalamoq': 'синькаламоқ',
    'siren': 'сирень',
    'skalpel': 'скальпель',
    'slesar': 'слесарь',
    'sobol': 'соболь',
    'sol': 'соль',
    'spektakl': 'спектакль',
    'spiral': 'спираль',
    'statya': 'статья',
    'stelka': 'стелька',
    'sterjen': 'стержень',
    'stil': 'стиль',
    'sudya': 'судья',
    'sudyalik': 'судьялик',
    'sulfat': 'сульфат',
    'sulfatlar': 'сульфатлар',
    'tabel': 'табель',
    'talk': 'тальк',
    'tekstil': 'текстиль',
    'telefilm': 'телефильм',
    'tigel': 'тигель',
    'tokar': 'токарь',
    'tol': 'толь',
    'tonnel': 'тоннель',
    'tunnel': 'туннель',
    'tush': 'тушь',
    'tyulen': 'тюлень',
    'tyul': 'тюль',
    'ultimatum': 'ультиматум',
    'ultra-': 'ультра-',
    'ultrabinafsha': 'ультрабинафша',
    'ultramikroskop': 'ультрамикроскоп',
    'ultratovush': 'ультратовуш',
    'ultraqisqa': 'ультрақисқа',
    'umivalnik': 'умивальник',
    'util': 'утиль',
    'fakultativ': 'факультатив',
    'fakultet': 'факультет',
    'fakultetlalaro': 'факультетлаларо',
    'falsifikator': 'фальсификатор',
    'falsifikatsiya': 'фальсификация',
    'fevral': 'февраль',
    'feldmarshal': 'фельдмаршал',
    'feldsher': 'фельдшер',
    'feldʼeger': 'фельдъегерь',
    'feleton': 'фельетон',
    'feletonchi': 'фельетончи',
    'festival': 'фестиваль',
    'fizkultura': 'физкультура',
    'fizkulturachi': 'физкультурачи',
    'film': 'фильм',
    'film-konsert': 'фильм-концерт',
    'filmoskop': 'фильмоскоп',
    'filmoteka': 'фильмотека',
    'filtr': 'фильтр',
    'filtratsiya': 'фильтрация',
    'filtrlamoq': 'фильтрламоқ',
    'filtrli': 'фильтрли',
    'folga': 'фольга',
    'folklor': 'фольклор',
    'folklorist': 'фольклорист',
    'folkloristika': 'фольклористика',
    'folklorchi': 'фольклорчи',
    'folklorshunos': 'фольклоршунос',
    'folklorshunoslik': 'фольклоршунослик',
    'fonar': 'фонарь',
    'fortepyano': 'фортепьяно',
    'xolodilnik': 'холодильник',
    'xrustal': 'хрусталь',
    'selsiy': 'цельсий',
    'sirkul': 'циркуль',
    'sokol': 'цоколь',
    'chizel': 'чизель',
    'shagren': 'шагрень',
    'shampun': 'шампунь',
    'sherst': 'шерсть',
    'shinel': 'шинель',
    'shifoner': 'шифоньер',
    'shnitsel': 'шницель',
    'shpatel': 'шпатель',
    'shpilka': 'шпилька',
    'shpindel': 'шпиндель',
    'shtangensirkul': 'штангенциркуль',
    'shtapel': 'штапель',
    'shtempel': 'штемпель',
    'emal': 'эмаль',
    'emulsiya': 'эмульсия',
    'endshpil': 'эндшпиль',
    'eskadrilya': 'эскадрилья',
    'yuan': 'юань',
    'yuriskonsult': 'юрисконсульт',
    'yakor': 'якорь',
    'yanvar': 'январь',
}

CYRILLIC_TO_LATIN = {
    'а': 'a', 'А': 'A',
    'б': 'b', 'Б': 'B',
    'в': 'v', 'В': 'V',
    'г': 'g', 'Г': 'G',
    'д': 'd', 'Д': 'D',
    'е': 'e', 'Е': 'E',
    'ё': 'yo', 'Ё': 'Yo',
    'ж': 'j', 'Ж': 'J',
    'з': 'z', 'З': 'Z',
    'и': 'i', 'И': 'I',
    'й': 'y', 'Й': 'Y',
    'к': 'k', 'К': 'K',
    'л': 'l', 'Л': 'L',
    'м': 'm', 'М': 'M',
    'н': 'n', 'Н': 'N',
    'о': 'o', 'О': 'O',
    'п': 'p', 'П': 'P',
    'р': 'r', 'Р': 'R',
    'с': 's', 'С': 'S',
    'т': 't', 'Т': 'T',
    'у': 'u', 'У': 'U',
    'ф': 'f', 'Ф': 'F',
    'х': 'x', 'Х': 'X',
    'ц': 's', 'Ц': 'S',
    'ч': 'ch', 'Ч': 'Ch',
    'ш': 'sh', 'Ш': 'Sh',
    'ъ': 'ʼ', 'Ъ': 'ʼ',
    'ь': '', 'Ь': '',
    'э': 'e', 'Э': 'E',
    'ю': 'yu', 'Ю': 'Yu',
    'я': 'ya', 'Я': 'Ya',
    'ў': 'oʻ', 'Ў': 'Oʻ',
    'қ': 'q', 'Қ': 'Q',
    'ғ': 'gʻ', 'Ғ': 'Gʻ',
    'ҳ': 'h', 'Ҳ': 'H',
}
CYRILLIC_VOWELS = (
    'а', 'А', 'е', 'Е', 'ё', 'Ё', 'и', 'И', 'о', 'О', 'у', 'У', 'э', 'Э',
    'ю', 'Ю', 'я', 'Я', 'ў', 'Ў'
)


def to_cyrillic(text):
    """Transliterate latin text to cyrillic  using the following rules:
    1. ye = е in the beginning of a word or after a vowel
    2. e = э in the beginning of a word or after a vowel
    3. ц exception words
    4. э exception words
    """
    # These compounds must be converted before other letters
    compounds_first = {
        'ch': 'ч', 'Ch': 'Ч', 'CH': 'Ч',
        # this line must come before 's' because it has an 'h'
        'sh': 'ш', 'Sh': 'Ш', 'SH': 'Ш',
        # This line must come before 'yo' because of it's apostrophe
        'yo‘': 'йў', 'Yo‘': 'Йў', 'YO‘': 'ЙЎ',
    }
    compounds_second = {
        'yo': 'ё', 'Yo': 'Ё', 'YO': 'Ё',
        # 'ts': 'ц', 'Ts': 'Ц', 'TS': 'Ц',  # No need for this, see TS_WORDS
        'yu': 'ю', 'Yu': 'Ю', 'YU': 'Ю',
        'ya': 'я', 'Ya': 'Я', 'YA': 'Я',
        'ye': 'е', 'Ye': 'Е', 'YE': 'Е',
        # different kinds of apostrophes
        'o‘': 'ў', 'O‘': 'Ў', 'oʻ': 'ў', 'Oʻ': 'Ў',
        'g‘': 'ғ', 'G‘': 'Ғ', 'gʻ': 'ғ', 'Gʻ': 'Ғ',
    }
    beginning_rules = {
        'ye': 'е', 'Ye': 'Е', 'YE': 'Е',
        'e': 'э', 'E': 'Э',
    }
    after_vowel_rules = {
        'ye': 'е', 'Ye': 'Е', 'YE': 'Е',
        'e': 'э', 'E': 'Э',
    }
    exception_words_rules = {
        's': 'ц', 'S': 'Ц',
        'ts': 'ц', 'Ts': 'Ц', 'TS': 'Ц',  # but not tS
        'e': 'э', 'E': 'э',
        'sh': 'сҳ', 'Sh': 'Сҳ', 'SH': 'СҲ',
        'yo': 'йо', 'Yo': 'Йо', 'YO': 'ЙО',
        'yu': 'йу', 'Yu': 'Йу', 'YU': 'ЙУ',
        'ya': 'йа', 'Ya': 'Йа', 'YA': 'ЙА',
    }

    # standardize some characters
    # the first one is the windows string, the second one is the mac string
    text = text.replace('ʻ', '‘')

    def replace_soft_sign_words(m):
        word= m.group(1)
        if word.isupper():
            result = SOFT_SIGN_WORDS[word.lower()].upper()
        elif word[0].isupper():
            result = SOFT_SIGN_WORDS[word.lower()]
            result = result[0].upper() + result[1:]
        else:
            result = SOFT_SIGN_WORDS[word.lower()]
        return result

    for word in SOFT_SIGN_WORDS:
        text = re.sub(
            r'\b(%s)' % word,
            replace_soft_sign_words,
            text,
            flags=re.U
        )

    def replace_exception_words(m):
        """Replace ц (or э) only leaving other characters unchanged"""
        return '%s%s%s' % (
            m.group(1)[:m.start(2)],
            exception_words_rules[m.group(2)],
            m.group(1)[m.end(2):]
        )
    # loop because of python's limit of 100 named groups
    for word in list(TS_WORDS.keys()) + list(E_WORDS.keys()):
        text = re.sub(
            r'\b(%s)' % word,
            replace_exception_words,
            text,
            flags=re.U
        )

    # compounds
    text = re.sub(
        r'(%s)' % '|'.join(compounds_first.keys()),
        lambda x: compounds_first[x.group(1)],
        text,
        flags=re.U
    )

    text = re.sub(
        r'(%s)' % '|'.join(compounds_second.keys()),
        lambda x: compounds_second[x.group(1)],
        text,
        flags=re.U
    )

    text = re.sub(
        r'\b(%s)' % '|'.join(beginning_rules.keys()),
        lambda x: beginning_rules[x.group(1)],
        text,
        flags=re.U
    )

    text = re.sub(
        r'(%s)(%s)' % ('|'.join(LATIN_VOWELS),
                       '|'.join(after_vowel_rules.keys())),
        lambda x: '%s%s' % (x.group(1), after_vowel_rules[x.group(2)]),
        text,
        flags=re.U
    )

    text = re.sub(
        r'(%s)' % '|'.join(LATIN_TO_CYRILLIC.keys()),
        lambda x: LATIN_TO_CYRILLIC[x.group(1)],
        text,
        flags=re.U
    )

    return text


def to_latin(text):
    """Transliterate cyrillic text to latin using the following rules:
    1. ц = s at the beginning of a word.
    ц = ts in the middle of a word after a vowel.
    ц = s in the middle of a word after consonant (DEFAULT in CYRILLIC_TO_LATIN)
        цирк = sirk
        цех = sex
        федерация = federatsiya
        функция = funksiya
    2. е = ye at the beginning of a word or after a vowel.
    е = e in the middle of a word after a consonant (DEFAULT).
    3. Сентябр = Sentabr, Октябр = Oktabr
    """
    beginning_rules = {
        'ц': 's', 'Ц': 'S',
        'е': 'ye', 'Е': 'Ye'
    }
    after_vowel_rules = {
        'ц': 'ts', 'Ц': 'Ts',
        'е': 'ye', 'Е': 'Ye'
    }

    text = re.sub(
        r'(сент|окт)([яЯ])(бр)',
        lambda x: '%s%s%s' % (x.group(1),
                              'a' if x.group(2) == 'я' else 'A', x.group(3)),
        text,
        flags=re.IGNORECASE | re.U
    )

    text = re.sub(
        r'\b(%s)' % '|'.join(beginning_rules.keys()),
        lambda x: beginning_rules[x.group(1)],
        text,
        flags=re.U
    )

    text = re.sub(
        r'(%s)(%s)' % ('|'.join(CYRILLIC_VOWELS),
                       '|'.join(after_vowel_rules.keys())),
        lambda x: '%s%s' % (x.group(1), after_vowel_rules[x.group(2)]),
        text,
        flags=re.U
    )

    text = re.sub(
        r'(%s)' % '|'.join(CYRILLIC_TO_LATIN.keys()),
        lambda x: CYRILLIC_TO_LATIN[x.group(1)],
        text,
        flags=re.U
    )

    return text


def transliterate(text, to_variant):
    if to_variant == 'cyrillic':
        text = to_cyrillic(text)
    elif to_variant == 'latin':
        text = to_latin(text)

    return text

if __name__ == "__main__":
    while True:
        text = input('>>>')
        print(to_cyrillic(text))
    

