(num)=>
[ ln = { {"десять ","одиннадцать ","двенадцать ","тринадцать ","четырнадцать ","пятнадцать ","шестнадцать ","семнадцать ","восемнадцать ","девятнадцать "},
{"","сто ","двести ","триста ","четыреста ","пятьсот ","шетьсот ","семьсот ","восемьсот ","девятьсот "},
{"","","двадцать ","тридцать ","сорок ","пятьдесят ","шестьдесят ","семьдесят ","восемьдесят ","девяносто "},
{"","один ","два ","три ","четыре ","пять ","шесть ","семь ","восемь ","девять "},
{"","одна ","две ","три ","четыре ","пять ","шесть ","семь ","восемь ","девять "}},
lr = { {"","миллиард ","миллиарда ","миллиарда ","миллиарда ","миллиардов "},
{"","миллион ","миллиона ","миллиона ","миллиона ","миллионов "},
{"","тысяча ","тысячи ","тысячи ","тысячи ","тысяч "},
{""," "," "," "," "," "}},
fn = (n,r)=> [ t = List.Transform(Text.ToList(n), each Number.From(_)),
x = ln{1}{t{0}} & (if t{1}<>1 then ln{2}{t{1}} & (if r = 2 then ln{4}{t{2}} else ln{3}{t{2}}) else ln{0}{t{2}}),
y = lr{r}{if t{1}=1 then 5 else List.Min({t{2},5})},
z = x&y][z],
t = Splitter.SplitTextByRepeatedLengths(3)(Number.ToText(num,"000000000000")),
z = if num = 0 then "ноль" else Text.Combine(List.Transform({0..3},each fn(t{_},_)),"")][z] |