using System;
using System.Linq;
class Program
{
static string[] CSVLineDataArr = new string[]
{"あきのたのかりほのいほのとまをあらみ,わかころもてはつゆにぬれつつ",
"はるすきてなつきにけらししろたへの,ころもほすてふあまのかくやま",
"あしひきのやまとりのをのしたりをの,なかなかしよをひとりかもねむ",
"たこのうらにうちいててみれはしろたへの,ふしのたかねにゆきはふりつつ",
"おくやまにもみちふみわけなくしかの,こゑきくときそあきはかなしき",
"かささきのわたせるはしにおくしもの,しろきをみれはよそふけにける",
"あまのはらふりさけみれはかすかなる,みかさのやまにいてしつきかも",
"わかいほはみやこのたつみしかそすむ,よをうちやまとひとはいふなり",
"はなのいろはうつりにけりないたつらに,わかみよにふるなかめせしまに",
"これやこのゆくもかへるもわかれては,しるもしらぬもあふさかのせき",
"わたのはらやそしまかけてこきいてぬと,ひとにはつけよあまのつりふね",
"あまつかせくものかよひちふきとちよ,をとめのすかたしはしととめむ",
"つくはねのみねよりおつるみなのかわ,こひそつもりてふちとなりぬる",
"みちのくのしのふもちすりたれゆゑに,みたれそめにしわれならなくに",
"きみかためはるののにいててわかなつむ,わかころもてにゆきはふりつつ",
"たちわかれいなはのやまのみねにおふる,まつとしきかはいまかへりこむ",
"ちはやふるかみよもきかすたつたかは,からくれなゐにみつくくるとは",
"すみのえのきしによるなみよるさへや,ゆめのかよひちひとめよくらむ",
"なにはかたみしかきあしのふしのまも,あはてこのよをすくしてよとや",
"わひぬれはいまはたおなしなにはなる,みをつくしてもあはむとそおもふ",
"いまこむといひしはかりになかつきの,ありあけのつきをまちいてつるかな",
"ふくからにあきのくさきのしをるれは,むへやまかせをあらしといふらむ",
"つきみれはちちにものこそかなしけれ,わかみひとつのあきにはあらねと",
"このたひはぬさもとりあへすたむけやま,もみちのにしきかみのまにまに",
"なにしおははあふさかやまのさねかつら,ひとにしられてくるよしもかな",
"をくらやまみねのもみちはこころあらは,いまひとたひのみゆきまたなむ",
"みかのはらわきてなかるるいつみかは,いつみきとてかこひしかるらむ",
"やまさとはふゆそさびしさまさりける,ひとめもくさもかれぬとおもへは",
"こころあてにおらはやおらむはつしもの,おきまとはせるしらきくのはな",
"ありあけのつれなくみえしわかれより,あかつきはかりうきものはなし",
"あさほらけありあけのつきとみるまてに,よしののさとにふれるしらゆき",
"やまかはにかせのかけたるしからみは,なかれもあへぬもみちなりけり",
"ひさかたのひかりのとけきはるのひに,しつこころなくはなのちるらむ",
"たれをかもしるひとにせむたかさこの,まつもむかしのともならなくに",
"ひとはいさこころもしらすふるさとは,はなそむかしのかににほひける",
"なつのよはまたよひなからあけぬるを,くものいつこにつきやとるらむ",
"しらつゆにかせのふきしくあきののは,つらぬきとめぬたまそちりける",
"わすらるるみをはおもはすちかひてし,ひとのいのちのをしくもあるかな",
"あさちふのをののしのはらしのふれと,あまりてなとかひとのこひしき",
"しのふれといろにいてにけりわかこひは,ものやおもふとひとのとふまて",
"こひすてふわかなはまたきたちにけり,ひとしれすこそおもひそめしか",
"ちきりきなかたみにそてをしほりつつ,すゑのまつやまなみこさしとは",
"あひみてののちのこころにくらふれは,むかしはものをおもはさりけり",
"あふことのたえてしなくはなかなかに,ひとをもみをもうらみさらまし",
"あはれともいふへきひとはおもほえて,みのいたつらになりぬへきかな",
"ゆらのとをわたるふなひとかちをたえ,ゆくへもしらぬこひのみちかな",
"やへむくらしけれるやとのさひしきに,ひとこそみえねあきはきにけり",
"かせをいたみいはうつなみのおのれのみ,くたけてものをおもふころかな",
"みかきもりゑしのたくひのよるはもえ,ひるはきえつつものをこそおもへ",
"きみかためおしからさりしいのちさへ,なかくもかなとおもひけるかな",
"かくとたにえやはいふきのさしもくさ,さしもしらしなもゆるおもひを",
"あけぬれはくるるものとはしりなから,なほうらめしきあさほらけかな",
"なけきつつひとりぬるよのあくるまは,いかにひさしきものとかはしる",
"わすれしのゆくすゑまてはかたけれは,けふをかきりのいのちともかな",
"たきのおとはたえてひさしくなりぬれと,なこそなかれてなほきこえけれ",
"あらさらむこのよのほかのおもひてに,いまひとたひのあふこともかな",
"めくりあひてみしやそれともわかぬまに,くもかくれにしよはのつきかけ",
"ありまやまゐなのささはらかせふけは,いてそよひとをわすれやはする",
"やすらはてねなましものをさよふけて,かたふくまてのつきをみしかな",
"おほえやまいくののみちのとほけれは,またふみもみすあまのはしたて",
"いにしへのならのみやこのやへさくら,けふここのへににほひぬるかな",
"よをこめてとりのそらねははかるとも,よにあふさかのせきはゆるさし",
"いまはたたおもひたえなむとはかりを,ひとつてならていふよしもかな",
"あさほらけうちのかはきりたえたえに,あらはれわたるせせのあしろき",
"うらみわひほさぬそてたにあるものを,こひにくちなむなこそをしけれ",
"もろともにあはれとおもへやまさくら,はなよりほかにしるひともなし",
"はるのよのゆめはかりなるたまくらに,かひなくたたむなこそをしけれ",
"こころにもあらてうきよになからへは,こひしかるへきよはのつきかな",
"あらしふくみむろのやまのもみちはは,たつたのかはのにしきなりけり",
"さひしさにやとをたちいててなかむれは,いつくもおなしあきのゆふくれ",
"ゆうされはかとたのいなはおとつれて,あしのまろやにあきかせそふく",
"おとにきくたかしのはまのあたなみは,かけしやそてのぬれもこそすれ",
"たかさこのをのへのさくらさきにけり,とやまのかすみたたすもあらなむ",
"うかりけるひとをはつせのやまおろしよ,はけしかれとはいのらぬものを",
"ちきりおきしさせもかつゆをいのちにて,あはれことしのあきもいぬめり",
"わたのはらこきいててみれはひさかたの,くもゐにまかふおきつしらなみ",
"せをはやみいわにせかるるたきかはの,われてもすゑにあはむとそおもふ",
"あはちしまかよふちとりのなくこゑに,いくよねさめぬすまのせきもり",
"あきかせにたなひくくものたえまより,もれいつるつきのかけのさやけさ",
"なかからむこころもしらすくろかみの,みたれてけさはものをこそおもへ",
"ほとときすなきつるかたをなかむれは,たたありあけのつきそのこれる",
"おもひわひさてもいのちはあるものを,うきにたへぬはなみたなりけり",
"よのなかよみちこそなけれおもひいる,やまのおくにもしかそなくなる",
"なからへはまたこのころやしのはれむ,うしとみしよそいまはこひしき",
"よもすからものおもふころはあけやらぬ,ねやのひまさへつれなかりけり",
"なけけとてつきやはものをおもはする,かこちかほなるわかなみたかな",
"むらさめのつゆもまたひぬまきのはに,きりたちのほるあきのゆふくれ",
"なにはえのあしのかりねのひとよゆゑ,みをつくしてやこひわたるへき",
"たまのをよたえなはたえねなからへは,しのふることのよはりもそする",
"みせはやなをしまのあまのそてたにも,ぬれにそぬれしいろはかはらす",
"きりきりすなくやしもよのさむしろに,ころもかたしきひとりかもねむ",
"わかそてはしほひにみえぬおきのいしの,ひとこそしらねかわくまもなし",
"よのなかはつねにもかもななきさこく,あまのおふねのつなてかなしも",
"みよしののやまのあきかせさよふけて,ふるさとさむくころもうつなり",
"おほけなくうきよのたみにおほふかな,わかたつそまにすみそめのそて",
"はなさそふあらしのにはのゆきならて,ふりゆくものはわかみなりけり",
"こぬひとをまつほのうらのゆふなきに,やくやもしほのみもこかれつつ",
"かせそよくならのをかはのゆふくれは,みそきそなつのしるしなりける",
"ひともをしひともうらめしあちきなく,よをおもふゆゑにものおもふみは",
"ももしきやふるきのきはのしのふにも,なほあまりあるむかしなりけり",
};
static void Main()
{
//上の句の合計
string[] KaminokuArr = CSVLineDataArr.Select(X => X.Split(',')[0]).ToArray();
int KaminokuSum = DeriveUniqMojiLengthSum(KaminokuArr);
//下の句の合計
string[] SimonokuArr = CSVLineDataArr.Select(X => X.Split(',')[1]).ToArray();
int SimonokuSum = DeriveUniqMojiLengthSum(SimonokuArr);
Console.WriteLine(KaminokuSum + SimonokuSum);
}
//一意になるのに必要な文字数の合計を返す
static int DeriveUniqMojiLengthSum(string[] pTargetArr)
{
int WillReturn = 0;
int UB = pTargetArr.GetUpperBound(0);
for (int I = 0; I <= UB; I++) {
string CurrStr = pTargetArr[I];
for (int J = 0; J <= CurrStr.Length - 1; J++) {
bool IsUniq = true;
string CurrPart = CurrStr.Substring(0, J + 1);
for (int K = 0; K <= UB; K++) {
if (K == I) continue;
if (pTargetArr[K].StartsWith(CurrPart)) {
IsUniq = false;
break;
}
}
if (IsUniq) {
WillReturn += J + 1;
break;
}
}
}
return WillReturn;
}
}