// https://szkopul.edu.pl/problemset/problem/mLv0a_y18C5vj5J6jFK2gbwr/site/?key=statement
// Chomiki
#include <bits/stdc++.h>
// using namespace std;
// #define GARY_DBG
#define GARY_LIB
// #define int long long
constexpr int sizik = 203;
#define ar std::array
#define pr std::pair
#define vec std::vector
typedef vec<vec<int>> _kra;
int n, m;
// Returns the length of the longest proper prefix of s
// which is also a suffix (excluding the whole string)
int maxPrefixSuffix(const std::string& s) {
int n = s.size();
std::vector<int> lps(n, 0); // longest prefix-suffix array
for (int i = 1, len = 0; i < n;) {
if (s[i] == s[len]) {
lps[i++] = ++len;
} else {
if (len != 0) {
len = lps[len - 1];
} else {
lps[i++] = 0;
}
}
}
int ans = lps[n - 1];
// make sure we don't take the whole string
if (ans == n) ans = lps[ans - 1];
return ans;
}
constexpr int64_t INF = INT64_MAX;
using Z = std::vector<std::vector<int64_t>>;
// int T1[sizik][sizik];
Z T1;
std::string s[sizik];
Z op(const Z& m1, const Z& m2) {
Z ret;
ret.resize(n, std::vector<int64_t>(n, INF));
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
for (int k = 0; k < n; k++) {
ret[i][j] = std::min(ret[i][j], m1[i][k] + m2[k][j]);
}
}
}
return ret;
}
Z calc(int x) {
if (x == 1) return T1;
assert(x > 1);
if (x % 2 == 0) {
auto t = calc(x / 2);
return op(t, t);
} else {
auto t = calc(x - 1);
return op(T1, t);
}
}
void solve() {
// calculate these stuff..
std::cin >> n >> m;
T1.resize(n, std::vector<int64_t>(n, 0));
// input
for (int i = 1; i <= n; i++) {
std::cin >> s[i];
}
if (m == 1) {
int64_t ans = INF;
for (int i = 1; i <= n; i++) {
ans = std::min(ans, (int64_t)s[i].size());
}
std::cout << ans << '\n';
return;
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
std::string helper;
if (i == j) {
helper = s[i];
} else {
helper = s[j] + "#" + s[i];
}
int o = maxPrefixSuffix(helper);
o = s[i].size() - o;
T1[i - 1][j - 1] = o;
}
}
// calc matrix
auto final_matrix = calc(m - 1);
int64_t ans = INF;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
ans = std::min(ans, final_matrix[i][j] + (int64_t)s[j + 1].size());
}
}
std::cout << ans << '\n';
}
int32_t main() {
#ifndef GARY_DBG
std::ios_base::sync_with_stdio(0);
std::cin.tie(0);
std::cout.tie(0);
#endif
int t = 1;
// std::cin >> t;
for (; t > 0; t--) {
solve();
}
return 0;
}