#include <vector>
#include <unordered_map>
std::vector<std::string>& word_list_japanese()
{
static std::vector<std::string> word_list(
"あい",
"あいこくしん",
"あう",
"あお",
"あおぞら",
"あか",
"あかちゃん",
"あき",
"あきる",
"あく",
"あさ",
"あさひ",
"あし",
"あずき",
"あせ",
"あそぶ",
"あたる",
"あつい",
"あな",
"あに",
"あね",
"あひる",
"あまい",
"あみ",
"あめ",
"あめりか",
"あやまる",
"あゆむ",
"あらいぐま",
"あらし",
"あり",
"ある",
"あれ",
"あわ",
"あんこ",
"いう",
"いえ",
"いおん",
"いか",
"いがい",
"いかいよう",
"いけ",
"いけん",
"いこく",
"いこつ",
"いさん",
"いし",
"いじゅう",
"いす",
"いせい",
"いせえび",
"いせかい",
"いせき",
"いそうろう",
"いそがしい",
"いたりあ",
"いてざ",
"いてん",
"いと",
"いない",
"いなか",
"いぬ",
"いね",
"いのち",
"いのる",
"いはつ",
"いはん",
"いびき",
"いひん",
"いふく",
"いへん",
"いほう",
"いま",
"いみ",
"いみん",
"いも",
"いもうと",
"いもたれ",
"いもり",
"いや",
"いやす",
"いよかん",
"いよく",
"いらい",
"いらすと",
"いりぐち",
"いりょう",
"いりょうひ",
"いる",
"いれい",
"いれもの",
"いれる",
"いろ",
"いろえんぴつ",
"いわ",
"いわう",
"いわかん",
"いんげんまめ",
"うえ",
"うおざ",
"うかぶ",
"うきわ",
"うく",
"うくらいな",
"うくれれ",
"うけつぐ",
"うけつけ",
"うける",
"うごく",
"うこん",
"うさぎ",
"うし",
"うしなう",
"うしろ",
"うしろがみ",
"うすい",
"うすぎ",
"うせつ",
"うそ",
"うた",
"うちあわせ",
"うちがわ",
"うちき",
"うつ",
"うなぎ",
"うなじ",
"うに",
"うねる",
"うのう",
"うぶげ",
"うぶごえ",
"うま",
"うまれる",
"うみ",
"うむ",
"うめ",
"うめる",
"うもう",
"うやまう",
"うよく",
"うら",
"うらない",
"うる",
"うるさい",
"うれしい",
"うろこ",
"うわき",
"うわさ",
"えい",
"えいえん",
"えいが",
"えいぎょう",
"えいご",
"えおり",
"えき",
"えきたい",
"えくせる",
"えさ",
"えしゃく",
"えすて",
"えつらん",
"えと",
"えのぐ",
"えび",
"えほうまき",
"えほん",
"えま",
"えまき",
"えもじ",
"えもの",
"えらい",
"えらぶ",
"えり",
"えりあ",
"える",
"えん",
"えんえん",
"おきる",
"おく",
"おけ",
"おこる",
"おしえる",
"おやゆび",
"おらんだ",
"かあつ",
"かい",
"かう",
"かお",
"かがし",
"かき",
"かく",
"かこ",
"かさ",
"かす",
"かち",
"かつ",
"かなざわし",
"かに",
"かね",
"かのう",
"かほう",
"かほご",
"かまぼこ",
"かみ",
"かむ",
"かめれおん",
"かも",
"かゆい",
"からい",
"かるい",
"かろう",
"かわ",
"かわら",
"きあい",
"きあつ",
"きいろ",
"ぎいん",
"きうい",
"きうん",
"きえる",
"きおう",
"きおく",
"きおち",
"きおん",
"きか",
"きかい",
"きかく",
"きかん",
"きかんしゃ",
"きぎ",
"ききて",
"きく",
"きくばり",
"きくらげ",
"きけん",
"きけんせい",
"きこう",
"きこえる",
"きこく",
"きさい",
"きさく",
"きさま",
"きさらぎ",
"きし",
"きしゅ",
"きす",
"きすう",
"きせい",
"きせき",
"きせつ",
"きそ",
"きそう",
"きそく",
"きぞく",
"ぎそく",
"きぞん",
"きた",
"きたえる",
"きち",
"きちょう",
"きつえん",
"きつつき",
"きつね",
"きてい",
"きどう",
"きどく",
"きない",
"きなが",
"きぬ",
"きぬごし",
"きねん",
"きのう",
"きはく",
"きびしい",
"きひん",
"きふ",
"ぎふ",
"きふく",
"ぎぼ",
"きほう",
"きぼう",
"きほん",
"きまる",
"きみ",
"きみつ",
"ぎむ",
"きむずかしい",
"きめ",
"きめる",
"きもだめし",
"きもち",
"きやく",
"きよう",
"きらい",
"きらく",
"きり",
"きる",
"きれい",
"きれつ",
"きろく",
"ぎろん",
"きわめる",
"ぐあい",
"くい",
"くいず",
"くうかん",
"くうき",
"くうぐん",
"くうこう",
"くうそう",
"くうふく",
"くうぼ",
"くかん",
"くき",
"くきょう",
"くげん",
"ぐこう",
"くさ",
"くさい",
"くさき",
"くさばな",
"くさる",
"くし",
"くしゃみ",
"くしょう",
"くすのき",
"くすり",
"くすりゆび",
"くせ",
"くせげ",
"くせん",
"くたびれる",
"くち",
"くちこみ",
"くちさき",
"くつ",
"くつした",
"くつろぐ",
"くとうてん",
"くどく",
"くなん",
"くに",
"くねくね",
"くのう",
"くふう",
"くま",
"くみあわせ",
"くみたてる",
"くむ",
"くめる",
"くやくしょ",
"くらす",
"くり",
"くれる",
"くろ",
"くろう",
"くわしい",
"ぐんじょ",
"けあな",
"けいけん",
"けいこ",
"けいさい",
"けいさつ",
"げいのうじん",
"けいれき",
"けいれつ",
"けいれん",
"けいろ",
"けおとす",
"けおりもの",
"けが",
"げき",
"げきか",
"げきげん",
"げきだん",
"げきちん",
"げきど",
"げきは",
"げきやく",
"げこう",
"げこくじょう",
"けさ",
"げざい",
"けさき",
"げざん",
"けしき",
"けしごむ",
"けしょう",
"けす",
"げすと",
"けた",
"げた",
"けたば",
"けち",
"けちゃっぷ",
"けちらす",
"けつ",
"けつあつ",
"けつい",
"けつえき",
"けっこん",
"けつじょ",
"けってい",
"けつまつ",
"げつようび",
"げつれい",
"けつろん",
"げどく",
"けとばす",
"けとる",
"けなげ",
"けなす",
"けなみ",
"けぬき",
"げねつ",
"けねん",
"けはい",
"げひん",
"けぶかい",
"げぼく",
"けまり",
"けみかる",
"けむし",
"けむり",
"けもの",
"けらい",
"ける",
"げろ",
"けろけろ",
"けわしい",
"けんい",
"けんえつ",
"けんお",
"けんか",
"げんき",
"けんきゅう",
"けんきょ",
"けんけい",
"けんけつ",
"けんげん",
"けんこう",
"けんさ",
"けんさく",
"けんしゅう",
"けんしゅつ",
"けんしん",
"けんすう",
"けんそう",
"げんそう",
"けんそん",
"げんち",
"けんちく",
"けんてい",
"げんてい",
"けんとう",
"けんない",
"けんにん",
"げんぶつ",
"けんま",
"けんみん",
"けんめい",
"けんらん",
"けんり",
"けんりつ",
"こあくま",
"こい",
"ごい",
"こいびと",
"こうい",
"こうえん",
"こうか",
"こうかい",
"こうかん",
"こうさい",
"こうさん",
"こうしん",
"こうず",
"こうすい",
"こうせん",
"こうそう",
"こうそく",
"こうたい",
"こうちゃ",
"こうつう",
"こうてい",
"こうとうぶ",
"こうない",
"こうはい",
"こうはん",
"こうもく",
"こえ",
"こえる",
"こおり",
"ごがつ",
"こかん",
"こく",
"こくご",
"こくない",
"こくはく",
"こけい",
"こける",
"ここ",
"こころ",
"ごさ",
"こさめ",
"こし",
"こしつ",
"こす",
"こすう",
"こせい",
"こせき",
"こぜん",
"こそだて",
"こたい",
"こたえる",
"こたつ",
"こちょう",
"こっか",
"こつこつ",
"こつばん",
"こつぶ",
"こてい",
"こてん",
"こと",
"ことがら",
"ことし",
"こなごな",
"こねこね",
"このまま",
"このみ",
"このよ",
"こはん",
"ごはん",
"ごび",
"こひつじ",
"こふう",
"こふん",
"こぼれる",
"ごま",
"こまかい",
"こまつし",
"こまつな",
"こまる",
"こむ",
"こむぎこ",
"こめ",
"こもじ",
"こもち",
"こもの",
"こもん",
"こや",
"こやく",
"こやま",
"こゆう",
"こゆび",
"こよい",
"こよう",
"こりる",
"こる",
"これくしょん",
"ころっけ",
"こわもて",
"こわれる",
"こん",
"こんいん",
"こんかい",
"こんき",
"こんしゅう",
"こんしゅん",
"こんすい",
"こんだて",
"こんだん",
"こんとん",
"こんなん",
"こんびに",
"こんぽう",
"こんぽん",
"こんまけ",
"こんや",
"こんやく",
"こんれい",
"こんわく",
"さいかい",
"さいがい",
"さいきん",
"さいご",
"さいこん",
"さいしょ",
"さうな",
"さお",
"さかいし",
"さかな",
"さかみち",
"さき",
"さく",
"さくし",
"さくじょ",
"さくひん",
"さくら",
"さけ",
"さこく",
"さこつ",
"さたん",
"さつえい",
"さっか",
"さっきょく",
"さつじん",
"さつたば",
"さつまいも",
"さてい",
"さといも",
"さとう",
"さとおや",
"さとる",
"さのう",
"さば",
"さばく",
"さべつ",
"さほう",
"さほど",
"さます",
"さみしい",
"さみだれ",
"さむけ",
"さめ",
"さめる",
"さやえんどう",
"さゆう",
"さよう",
"さよく",
"さら",
"さらだ",
"さる",
"さわやか",
"さわる",
"さんいん",
"さんか",
"さんきゃく",
"さんこう",
"さんさい",
"さんざん",
"さんすう",
"さんせい",
"さんそ",
"さんそん",
"さんち",
"さんちょう",
"さんま",
"さんみ",
"さんらん",
"しあい",
"しあげ",
"しあさって",
"しあわせ",
"しいく",
"しいん",
"しうち",
"しえい",
"しお",
"しおけ",
"しか",
"しかい",
"しかく",
"じかん",
"した",
"したぎ",
"したて",
"したみ",
"しちょう",
"しちょうそん",
"しちりん",
"じつじ",
"してい",
"してき",
"してつ",
"してん",
"しとう",
"じどう",
"しなぎれ",
"しなもの",
"しなん",
"しねま",
"しねん",
"しのぐ",
"しのぶ",
"しはい",
"しばかり",
"しはつ",
"じはつ",
"しはらい",
"しはん",
"しひょう",
"じふ",
"しふく",
"じぶん",
"しへい",
"しほう",
"しほん",
"しま",
"しまう",
"しまる",
"しみ",
"じみ",
"しみん",
"じむ",
"しむける",
"しめい",
"しめる",
"しもん",
"しゃいん",
"しゃうん",
"しゃおん",
"しゃかい",
"じゃがいも",
"しやくしょ",
"しゃくほう",
"しゃけん",
"しゃこ",
"しゃこう",
"しゃざい",
"しゃしん",
"しゃせん",
"しゃそう",
"しゃたい",
"しゃたく",
"しゃちょう",
"しゃっきん",
"じゃま",
"じゃり",
"しゃりょう",
"しゃりん",
"しゃれい",
"しゅうえん",
"しゅうかい",
"しゅうきん",
"しゅうけい",
"しゅうりょう",
"しゅらば",
"しょうか",
"しょうかい",
"しょうきん",
"しょうじき",
"しょくざい",
"しょくたく",
"しょっけん",
"しょどう",
"しょもつ",
"しん",
"しんか",
"しんこう",
"しんせいじ",
"しんちく",
"しんりん",
"すあげ",
"すあし",
"すあな",
"ずあん",
"すいか",
"すいとう",
"すう",
"すうがく",
"すうじつ",
"すうせん",
"すおどり",
"すき",
"すきま",
"すく",
"すくう",
"すくない",
"すける",
"すこし",
"ずさん",
"すし",
"すずしい",
"すすめる",
"すそ",
"ずっしり",
"ずっと",
"すで",
"すてき",
"すてる",
"すな",
"すなっく",
"すなっぷ",
"すね",
"すねる",
"すのこ",
"すはだ",
"すばらしい",
"ずひょう",
"ずぶぬれ",
"すぶり",
"すふれ",
"すべて",
"すべる",
"ずほう",
"すぼん",
"すまい",
"すみ",
"すむ",
"すめし",
"すもう",
"すやき",
"すらいす",
"すらいど",
"すらすら",
"すり",
"する",
"するめ",
"すれちがう",
"すろっと",
"すわる",
"すんぜん",
"すんぽう",
"せあぶら",
"せいか",
"せいかい",
"せいかつ",
"せおう",
"せかい",
"せかいかん",
"せかいし",
"せかいじゅう",
"せき",
"せきにん",
"せきむ",
"せきゆ",
"せきらんうん",
"せけん",
"せこう",
"せすじ",
"せたい",
"せたけ",
"せっかい",
"せっかく",
"せっき",
"せっきゃく",
"せっきょく",
"せっきん",
"ぜっく",
"せっけん",
"せっこつ",
"せっさたくま",
"せつぞく",
"せつだん",
"せつでん",
"せっぱん",
"せつび",
"せつぶん",
"せつめい",
"せつりつ",
"せと",
"せなか",
"せのび",
"せはば",
"せぼね",
"せまい",
"せまる",
"せみ",
"せめる",
"せもたれ",
"せりふ",
"せわ",
"せん",
"ぜんあく",
"せんい",
"せんえい",
"せんか",
"せんきょ",
"せんく",
"せんけつ",
"せんげん",
"ぜんご",
"せんさい",
"せんし",
"せんしゅ",
"せんす",
"せんすい",
"せんせい",
"せんぞ",
"せんそう",
"せんたく",
"せんち",
"せんちゃ",
"せんちゃく",
"せんちょう",
"せんてい",
"せんとう",
"せんぬき",
"せんねん",
"ぜんぶ",
"せんぷうき",
"せんぷく",
"ぜんぽう",
"せんむ",
"せんめい",
"せんめんじょ",
"せんもん",
"せんやく",
"せんゆう",
"せんよう",
"ぜんら",
"ぜんりゃく",
"せんりょく",
"せんれい",
"せんろ",
"そあく",
"そいとげる",
"そいね",
"そう",
"ぞう",
"そうがんきょう",
"そうき",
"そうご",
"そうなん",
"そうび",
"そうひょう",
"そうめん",
"そうり",
"そうりょ",
"そえもの",
"そえん",
"そかい",
"そがい",
"そぐ",
"そげき",
"そこう",
"そこそこ",
"そざい",
"そし",
"そしな",
"そせい",
"そせん",
"そそぐ",
"そだてる",
"そつう",
"そつえん",
"そっかん",
"そつぎょう",
"そっけつ",
"そっこう",
"そっせん",
"そっと",
"そで",
"そと",
"そとがわ",
"そとづら",
"そなえる",
"そなた",
"そば",
"そふ",
"そふぼ",
"そぼ",
"そぼく",
"そぼろ",
"そまつ",
"そまる",
"そむく",
"そむりえ",
"そめる",
"そもそも",
"そよかぜ",
"そら",
"そらまめ",
"そり",
"そる",
"そろう",
"そんかい",
"そんけい",
"そんざい",
"そんしつ",
"そんしょう",
"そんぞく",
"そんちょう",
"ぞんび",
"ぞんぶん",
"そんみん",
"たあい",
"たいいん",
"たいうん",
"たいえき",
"たいおう",
"だいおう",
"たいか",
"たいかい",
"たいき",
"たいきけん",
"たいぐう",
"たいくつ",
"たいけい",
"たいけつ",
"たいけん",
"たいこ",
"たいこう",
"たいさ",
"たいさん",
"たいしゅつ",
"だいじょうぶ",
"たいしょく",
"だいず",
"だいすき",
"たいせい",
"たいせつ",
"たいせん",
"たいそう",
"たいちょう",
"だいちょう",
"たいとう",
"たいない",
"たいねつ",
"たいのう",
"たいは",
"たいはん",
"たいひ",
"たいふう",
"たいへん",
"たいほ",
"たいまつばな",
"たいまん",
"たいみんぐ",
"たいむ",
"たいめん",
"たいやき",
"たいやく",
"たいよう",
"たいら",
"たいりょう",
"たいりょく",
"たいる",
"たいわ",
"たいわん",
"たうえ",
"たえる",
"たおす",
"たおる",
"たかい",
"たかね",
"たき",
"たきび",
"たくさん",
"たけ",
"たこ",
"たこく",
"たこやき",
"たさい",
"ださい",
"たしざん",
"たす",
"たすける",
"たそがれ",
"たたかう",
"たたく",
"たちば",
"たちばな",
"たつ",
"だっかい",
"だっきゃく",
"だっこ",
"だっしめん",
"だっしゅつ",
"だったい",
"たて",
"たてる",
"たとえる",
"たな",
"たにん",
"たぬき",
"たね",
"たのしみ",
"たはつ",
"たび",
"たぶん",
"たべる",
"たぼう",
"たほうめん",
"たま",
"たまご",
"たまる",
"だむる",
"ためいき",
"ためす",
"ためる",
"たもつ",
"たやすい",
"たよる",
"たら",
"たらす",
"たりきほんがん",
"たりょう",
"たりる",
"たる",
"たると",
"たれる",
"たれんと",
"たろっと",
"たわむれる",
"たん",
"だんあつ",
"たんい",
"たんおん",
"たんか",
"たんき",
"たんけん",
"たんご",
"たんさく",
"たんさん",
"たんし",
"たんしゅく",
"たんじょうび",
"だんせい",
"たんそく",
"たんたい",
"たんち",
"だんち",
"たんちょう",
"たんてい",
"たんてき",
"たんとう",
"だんな",
"たんにん",
"だんねつ",
"たんのう",
"たんぴん",
"たんまつ",
"たんめい",
"だんれつ",
"だんろ",
"だんわ",
"ちあい",
"ちあん",
"ちい",
"ちいき",
"ちいさい",
"ちえ",
"ちえん",
"ちか",
"ちかい",
"ちきゅう",
"ちきん",
"ちけい",
"ちけいず",
"ちけん",
"ちこく",
"ちさい",
"ちしき",
"ちしりょう",
"ちず",
"ちせい",
"ちそう",
"ちたい",
"ちたん",
"ちちおや",
"ちつじょ",
"ちてき",
"ちてん",
"ちぬき",
"ちぬり",
"ちのう",
"ちひょう",
"ちへいせん",
"ちほう",
"ちまた",
"ちみつ",
"ちみどろ",
"ちめいど",
"ちゅうい",
"ちゅうおう",
"ちゅうおうく",
"ちゅうがっこう",
"ちゅうごく",
"ちゆりょく",
"ちょうさ",
"ちょうし",
"ちらし",
"ちらみ",
"ちり",
"ちりがみ",
"ちる",
"ちるど",
"ちわわ",
"ちんたい",
"ちんもく",
"ついか",
"つうか",
"つうじょう",
"つうじる",
"つうはん",
"つうわ",
"つえ",
"つかう",
"つかれる",
"つき",
"つく",
"つくね",
"つくる",
"つけね",
"つける",
"つごう",
"つた",
"つたえる",
"つち",
"つつじ",
"つとめる",
"つな",
"つながる",
"つなみ",
"つねづね",
"つの",
"つのる",
"つば",
"つぶ",
"つぶす",
"つぼ",
"つま",
"つまらない",
"つまる",
"つみ",
"つみき",
"つむ",
"つめたい",
"つもる",
"つや",
"つよい",
"つり",
"つるぼ",
"つるみく",
"つわもの",
"つわり",
"てあし",
"てあて",
"てあみ",
"ていか",
"ていき",
"ていけい",
"ていけつ",
"ていけつあつ",
"ていこく",
"ていさつ",
"ていし",
"ていしゃ",
"ていせい",
"ていたい",
"ていど",
"ていねい",
"ていひょう",
"ていへん",
"ていぼう",
"てうち",
"ておくれ",
"てき",
"てくび",
"てこ",
"てさぎょう",
"てさげ",
"でし",
"てすり",
"てそう",
"てちがい",
"てちょう",
"てつがく",
"てつづき",
"てつや",
"でぬかえ",
"てぬき",
"てぬぐい",
"てのひら",
"てはい",
"てふだ",
"てほどき",
"てほん",
"てま",
"てまえ",
"てまきずし",
"てみじか",
"てみやげ",
"てら",
"てらす",
"でる",
"てれび",
"てろ",
"てわけ",
"てわたし",
"でんあつ",
"てんい",
"てんいん",
"てんかい",
"てんき",
"てんぐ",
"てんけん",
"でんげん",
"てんごく",
"てんさい",
"てんすう",
"でんち",
"てんてき",
"てんとう",
"てんない",
"てんぷ",
"てんぷら",
"てんぼうだい",
"てんめつ",
"てんらく",
"てんらんかい",
"でんりゅう",
"でんりょく",
"でんわ",
"どあ",
"どあい",
"といれ",
"とうむぎ",
"とおい",
"とおす",
"とかい",
"とかす",
"ときおり",
"ときどき",
"とくい",
"とくてい",
"とくてん",
"とくべつ",
"とけい",
"とける",
"とさか",
"とし",
"としょかん",
"とそう",
"とたん",
"とち",
"とちゅう",
"とつぜん",
"とつにゅう",
"ととのえる",
"とない",
"となえる",
"となり",
"とのさま",
"とばす",
"とぶ",
"とほ",
"とほう",
"どま",
"とまる",
"とら",
"とり",
"とる",
"とんかつ",
"ない",
"ないか",
"ないかく",
"ないこう",
"ないしょ",
"ないす",
"ないせん",
"ないそう",
"ないぞう",
"なおす",
"なく",
"なこうど",
"なさけ",
"なし",
"なす",
"なぜ",
"なぞ",
"なたでここ",
"なつ",
"なっとう",
"なつやすみ",
"ななおし",
"なにごと",
"なにもの",
"なにわ",
"なは",
"なび",
"なふだ",
"なべ",
"なまいき",
"なまえ",
"なまみ",
"なみ",
"なみだ",
"なめらか",
"なめる",
"なやむ",
"ならぶ",
"なる",
"なれる",
"なわ",
"なわとび",
"なわばり",
"にあう",
"にいがた",
"にうけ",
"におい",
"にかい",
"にがて",
"にきび",
"にく",
"にくしみ",
"にくまん",
"にげる",
"にさんかたんそ",
"にし",
"にしき",
"にす",
"にせもの",
"にちじ",
"にちじょう",
"にちようび",
"にっか",
"にっき",
"にっけい",
"にっこう",
"にっさん",
"にっしょく",
"にっすう",
"にっせき",
"にってい",
"になう",
"にほん",
"にまめ",
"にもつ",
"にやり",
"にゅういん",
"にゅうか",
"にゅうし",
"にゅうしゃ",
"にゅうだん",
"にゅうぶ",
"にら",
"にりんしゃ",
"にる",
"にわ",
"にわとり",
"にんい",
"にんか",
"にんき",
"にんげん",
"にんしき",
"にんしょう",
"にんしん",
"にんずう",
"にんそう",
"にんたい",
"にんち",
"にんてい",
"にんにく",
"にんぷ",
"にんまり",
"にんむ",
"にんめい",
"にんよう",
"ぬう",
"ぬか",
"ぬく",
"ぬくもり",
"ぬし",
"ぬの",
"ぬま",
"ぬめり",
"ぬらす",
"ぬる",
"ぬんちゃく",
"ねあげ",
"ねいき",
"ねいる",
"ねいろ",
"ねぎ",
"ねぐせ",
"ねくたい",
"ねくら",
"ねこ",
"ねこぜ",
"ねこむ",
"ねさげ",
"ねすごす",
"ねそべる",
"ねつい",
"ねつぞう",
"ねったい",
"ねったいぎょ",
"ねぶそく",
"ねふだ",
"ねぼう",
"ねほりはほり",
"ねまき",
"ねまわし",
"ねみみ",
"ねむい",
"ねもと",
"ねらう",
"ねる",
"ねわざ",
"ねんいり",
"ねんおし",
"ねんかん",
"ねんき",
"ねんきん",
"ねんぐ",
"ねんざ",
"ねんし",
"ねんちゃく",
"ねんちょう",
"ねんど",
"ねんぴ",
"ねんぶつ",
"ねんまく",
"ねんまつ",
"ねんりき",
"ねんりょう",
"ねんれい",
"のいず",
"のう",
"のおづま",
"のがす",
"のきなみ",
"のこぎり",
"のこす",
"のせる",
"のぞく",
"のぞむ",
"のたまう",
"のちほど",
"のっく",
"のばす",
"のはら",
"のべる",
"のぼる",
"のむ",
"のやま",
"のらいぬ",
"のらねこ",
"のり",
"のる",
"のれん",
"のんき",
"ばあい",
"はあく",
"ばあさん",
"はい",
"ばいか",
"ばいく",
"はいけん",
"はいご",
"はいこう",
"はいし",
"はいしゅつ",
"はいしん",
"はいすい",
"はいせつ",
"はいせん",
"はいそう",
"はいち",
"ばいばい",
"はう",
"はえ",
"はえる",
"はおる",
"はか",
"ばか",
"はかい",
"はかる",
"はき",
"はく",
"はくしゅ",
"はけん",
"はこ",
"はこぶ",
"はさみ",
"はさん",
"はし",
"はしご",
"はしる",
"ばす",
"はせる",
"ぱそこん",
"はそん",
"はたん",
"はち",
"はちみつ",
"はっか",
"はっかく",
"はっき",
"はっきり",
"はっくつ",
"はっけん",
"はっこう",
"はっさん",
"はっしゃ",
"はっしん",
"はったつ",
"はっちゃく",
"はっちゅう",
"はってん",
"はっぴょう",
"はっぽう",
"はて",
"はな",
"はなす",
"はなび",
"はにかむ",
"はね",
"はは",
"はぶらし",
"はま",
"はみがき",
"はむ",
"はむかう",
"はめつ",
"はやい",
"はら",
"はらう",
"はり",
"はる",
"はれ",
"はろうぃん",
"はわい",
"はんい",
"はんえい",
"はんえん",
"はんおん",
"はんかく",
"はんかち",
"はんきょう",
"はんこ",
"はんこう",
"はんしゃ",
"はんしん",
"はんすう",
"はんたい",
"はんだん",
"ぱんち",
"ぱんつ",
"はんてい",
"はんてん",
"はんとし",
"はんのう",
"はんぱ",
"はんぶん",
"はんぺん",
"はんぼうき",
"はんめい",
"はんめん",
"はんらん",
"はんろん",
"ひいき",
"ひうん",
"ひえる",
"ひかく",
"ひかり",
"ひかん",
"ひく",
"ひくい",
"ひけつ",
"ひこうき",
"ひこく",
"ひざ",
"ぴざ",
"ひさい",
"ひさしぶり",
"ひさん",
"ひし",
"ひじ",
"ひしょ",
"ひじょう",
"ひそか",
"ひそむ",
"ひたむき",
"ひたる",
"ひつぎ",
"ひっこし",
"ひっし",
"ひっす",
"ひつぜん",
"ひつよう",
"ひてい",
"ひと",
"ひとごみ",
"ひな",
"ひなん",
"ひねる",
"ひはん",
"ひびく",
"ひひょう",
"ひふ",
"ひほう",
"ひま",
"ひまん",
"ひみつ",
"ひめ",
"ひめい",
"ひめじし",
"ひも",
"ひやけ",
"ひやす",
"ひゆ",
"ひよう",
"びょうき",
"ひらく",
"ひりつ",
"ひりょう",
"ひる",
"ひれい",
"ひろい",
"ひろう",
"ひわ",
"ひんかく",
"ひんけつ",
"ひんこん",
"ひんし",
"ひんしつ",
"ひんしゅ",
"ひんそう",
"ぴんち",
"ひんぱん",
"びんぼう",
"ふあん",
"ふいうち",
"ふうけい",
"ふうせん",
"ふうとう",
"ふうふ",
"ふえ",
"ふえる",
"ふおん",
"ふか",
"ふかい",
"ふきん",
"ふく",
"ふくざつ",
"ふこう",
"ふさい",
"ふざい",
"ふしぎ",
"ふじみ",
"ふすま",
"ふせい",
"ふせぐ",
"ふそく",
"ふた",
"ふたん",
"ふち",
"ふちょう",
"ふつう",
"ふっかつ",
"ふっき",
"ふっきん",
"ふっこく",
"ふとる",
"ふとん",
"ふね",
"ふのう",
"ふはい",
"ふひょう",
"ふへん",
"ふまん",
"ふみん",
"ふむ",
"ふめつ",
"ふめん",
"ふゆ",
"ふよう",
"ふりこ",
"ふりる",
"ふる",
"ふるい",
"ふろ",
"ふんいき",
"ふんか",
"ぶんか",
"ぶんぐ",
"ふんしつ",
"ぶんせき",
"ふんそう",
"へい",
"へいき",
"へいさ",
"へいわ",
"へきが",
"へこむ",
"へそ",
"へた",
"べつ",
"べっど",
"ぺっと",
"へび",
"へや",
"へる",
"へんか",
"へんかん",
"へんきゃく",
"へんきん",
"へんさい",
"へんたい",
"ほあん",
"ほいく",
"ほうほう",
"ほえる",
"ほおん",
"ほかん",
"ほきょう",
"ぼきん",
"ほくろ",
"ほけつ",
"ほけん",
"ほこう",
"ほこる",
"ほさ",
"ほし",
"ほしつ",
"ほしゅ",
"ほしょう",
"ほす",
"ほせい",
"ぼせい",
"ほそい",
"ほそく",
"ほたて",
"ほたる",
"ぼち",
"ほっきょく",
"ほっさ",
"ほったん",
"ほとんど",
"ほめる",
"ほる",
"ほんい",
"ほんき",
"ほんけ",
"ほんしつ",
"まいにち",
"まう",
"まかい",
"まかせる",
"まく",
"まける",
"まこと",
"まさつ",
"ますく",
"まぜる",
"まち",
"まつ",
"まつり",
"まとめ",
"まなぶ",
"まぬけ",
"まね",
"まねく",
"まひ",
"まほう",
"まめ",
"まもる",
"まゆげ",
"まよう",
"まる",
"まろやか",
"まわす",
"まわり",
"まんが",
"まんかい",
"まんきつ",
"まんぞく",
"みいら",
"みうち",
"みかた",
"みかん",
"みぎ",
"みけん",
"みこん",
"みすい",
"みすえる",
"みせ",
"みそ",
"みち",
"みてい",
"みとめる",
"みなみかさい",
"みねらる",
"みのう",
"みほん",
"みみ",
"みもと",
"みやげ",
"みらい",
"みりょく",
"みる",
"みわく",
"むえき",
"むえん",
"むかし",
"むく",
"むこ",
"むさぼる",
"むし",
"むすこ",
"むすめ",
"むせる",
"むせん",
"むだ",
"むち",
"むなしい",
"むね",
"むのう",
"むやみ",
"むよう",
"むら",
"むり",
"むりょう",
"むれ",
"むろん",
"もうどうけん",
"もえる",
"もぎ",
"もくし",
"もくてき",
"もし",
"もんく",
"もんだい",
"やすい",
"やすみ",
"やそう",
"やたい",
"やちん",
"やね",
"やぶる",
"やま",
"やみ",
"やめる",
"ややこしい",
"やよい",
"やり",
"やわらかい",
"ゆけつ",
"ゆしゅつ",
"ゆせん",
"ゆそう",
"ゆたか",
"ゆちゃく",
"ゆでる",
"ゆび",
"ゆびわ",
"ゆめ",
"ゆれる",
"よう",
"よかぜ",
"よかん",
"よきん",
"よくせい",
"よくぼう",
"よけい",
"よさん",
"よそう",
"よそく",
"よち",
"よてい",
"よどがわく",
"よねつ",
"よむ",
"よめ",
"よやく",
"よゆう",
"よる",
"よろこぶ",
"らいう",
"らくがき",
"らくご",
"らくさつ",
"らくだ",
"らくたん",
"らしんばん",
"らせん",
"らぞく",
"らたい",
"らち",
"らっか",
"らっかせい",
"られつ",
"りえき",
"りか",
"りかい",
"りきさく",
"りきせつ",
"りく",
"りくぐん",
"りくつ",
"りけん",
"りこう",
"りし",
"りす",
"りせい",
"りそう",
"りそく",
"りてん",
"りねん",
"りゅう",
"りゆう",
"りゅうがく",
"りゅうこう",
"りゅうし",
"りゅうねん",
"りよう",
"りょうかい",
"りょうきん",
"りょうしん",
"りょうて",
"りょうど",
"りょうほう",
"りょうり",
"りりく",
"りれき",
"りろん",
"りんご",
"るいじ",
"るす",
"れいかん",
"れいぎ",
"れいせい",
"れいぞうこ",
"れいとう",
"れきし",
"れきだい",
"れんあい",
"れんけい",
"れんけつ",
"れんこう",
"れんこん",
"れんさ",
"れんさい",
"れんさく",
"れんしゃ",
"れんしゅう",
"れんぞく",
"ろうか",
"ろうご",
"ろうじん",
"ろうそく",
"ろか",
"ろくが",
"ろこつ",
"ろしゅつ",
"ろせん",
"ろてん",
"ろめん",
"ろれつ",
"ろんぎ",
"ろんぱ",
"ろんぶん",
"ろんり",
"わじまし"
);
return word_list;
}
std::unordered_map<std::string, unsigned int>& word_map_japanese()
{
static std::unordered_map<std::string, unsigned int> word_map;
if (word_map.size() > 0)
{
return word_map;
}
std::vector<std::string> word_list = word_list_japanese();
int ii;
std::vector<std::string>::iterator it;
for (it = word_list.begin(), ii = 0; it != word_list.end(); it++, ii++)
{
word_map[*it] = ii;
}
return word_map;
}
std::unordered_map<std::string, unsigned int>& trimmed_word_map_japanese()
{
static std::unordered_map<std::string, unsigned int> trimmed_word_map;
if (trimmed_word_map.size() > 0)
{
return trimmed_word_map;
}
std::vector<std::string> word_list = word_list_japanese();
int ii;
std::vector<std::string>::iterator it;
for (it = word_list.begin(), ii = 0; it != word_list.end(); it++, ii++)
{
if (it->length() > 4)
{
trimmed_word_map[it->substr(0, 4)] = ii;
}
else
{
trimmed_word_map[*it] = ii;
}
}
return trimmed_word_map;
}