HOJIN_PATTERNS = [
    ('株式会社', ['かぶしきがいしゃ', 'かぶしきかいしゃ']),
    ('合同会社', ['ごうどうがいしゃ', 'ごうどうかいしゃ']),
    ('有限会社', ['ゆうげんがいしゃ', 'ゆうげんかいしゃ']),
    ('一般社団法人', ['いっぱんしゃだんほうじん']),
    ('一般財団法人', ['いっぱんざいだんほうじん']),
    ('学校法人', ['がっこうほうじん']),
    ('公益財団法人', ['こうえきざいだんほうじん']),
    ('公益社団法人', ['こうえきしゃだんほうじん']),
    ('特定非営利活動法人', ['とくていひえいりかつどうほうじん']),
    ('国立研究開発法人', ['こくりつけんきゅうかいはつほうじん']),
    ('社団法人', ['しゃだんほうじん']),
    ('NPO法人', ['えぬぴーおーほうじん']),
    ('独立行政法人', ['どくりつぎょうせいほうじん']),
    ('財団法人', ['ざいだんほうじん']),
    ('弁護士法人', ['べんごしほうじん']),
    ('認定特定非営利活動法人', ['にんていとくていひえいりかつどうほうじん']),
    ('宗教法人', ['しゅうきょうほうじん']),
    ('認定NPO法人', ['にんていえぬぴーおーほうじん']),
    ('医療法人', ['いりょうほうじん']),
    ('社団医療法人', ['しゃだんいりょうほうじん']),
    ('社会福祉法人', ['しゃかいふくしほうじん']),
    ('社会医療法人', ['しゃかいいりょうほうじん']),
    ('有限責任中間法人', ['ゆうげんせきにんちゅうかんほうじん']),
    ('地方独立行政法人', ['ちほうどくりつぎょうせいほうじん']),
    ('金融商品会員制法人', ['きんゆうしょうひんかいいんせいほうじん']),
    ('特定非営利法人', ['とくていひえいりほうじん']),
    ('国立大学法人', ['こくりつだいがくほうじん']),
    ('準学校法人', ['じゅんがっこうほうじん']),
    ('大学共同利用機関法人', ['だいがくきょうどうりようきかんほうじん']),
    ('税理士法人', ['ぜいりしほうじん']),
    ('米国非営利教育法人', ['べいこくひえいりきょういくほうじん']),
    ('農業生産法人', ['のうぎょうせいさんほうじん']),
    ('相互会社', ['そうごかいしゃ', 'そうごがいしゃ']),
    ('株式會社', ['かぶしきがいしゃ', 'かぶしきかいしゃ']),
    ('合資会社', ['ごうしかいしゃ', 'ごうしがいしゃ']),
    ('合名会社', ['ごうめいがいしゃ', 'ごうめいかいしゃ']),
    ('国立病院機構', ['こくりつびょういんきこう']),
]

# 株式会社少年画報社:しょうねんがほうしゃ -> 少年画報社:しょうねんがほうしゃ
# 京浜急行電鉄株式会社:けいひんきゅうこうでんてつ -> 京浜急行電鉄:けいひんきゅうこうでんてつ


def hojin_filter(kanji, yomi):
    for f in HOJIN_PATTERNS:
        (k, ys) = f

        for y in ys:
            if k == kanji and y == yomi:
                break

            if kanji.startswith(k) and not yomi.startswith(y):
                kanji = kanji[len(k):]
            if kanji.startswith(k) and yomi.startswith(y):
                kanji = kanji[len(k):]
                yomi = yomi[len(y):]
            if not kanji.startswith(k) and yomi.startswith(y):
                yomi = yomi[len(y):]
            if kanji.endswith(k) and not yomi.endswith(y):
                kanji = kanji[:-len(k)]
            if kanji.endswith(k) and yomi.endswith(y):
                kanji = kanji[:-len(k)]
                yomi = yomi[:-len(y)]
            if not kanji.endswith(k) and yomi.endswith(y):
                yomi = yomi[:-len(y)]
    return kanji, yomi
