#include <bits/stdc++.h>
#include <iostream>
#include <string>
#include <map>
#include <set>
#include <queue>
#include <vector>
#include <list>
#include <deque>

#define rep(i,n) for (register int i = 1; i <= n; i++ )
#define fo(i,x,y) for (register int i = x; i <= y; i++ )

#pragma GCC optimize(3)

using namespace std;

template <class T> inline void read(register T &x)
{
    register long long flag = 1;
    x = 0; register char ch = getchar();
    for( ; !isdigit(ch) ; ch = getchar() ) if(ch == '-') flag = -1;
    for( ; isdigit(ch) ; ch = getchar() ) x = (x << 1) + (x << 3) + (ch ^ 48);
    x *= flag;
}

template <class T> inline void write(register T x)
{
    if (x < 0) putchar('-'), x = -x;
    if (x > 9) write(x / 10);
    putchar(x % 10 + '0');
}

template <class T> inline void writeln(register T x)
{
    write(x);
    puts("");
}

template <class T> inline T Check_Max(register T a, register T b)
{
    return a > b ? a : b;
}

enum
{
    MAXN = 110
};
string str[MAXN], Temp;
int n, m, len, ans, t[10];
map <string, int> _Hash;

inline int Doit()
{
    for (register int i = 0; i < 8; i++ )
        if(t[t[i]] ^ t[i]) return 0;
        
    _Hash.clear();
    for (register int i = 1; i <= n; i++ )
    {
        for (register int j = 0; j < len; j++ )
        Temp[j] = t[str[i][j] - 97] + 97;
        _Hash[Temp]++;
    } 
    
    register int Result = 0;
    map <string, int> :: iterator iter;
    
    for (iter = _Hash.begin(); iter != _Hash.end(); iter++)
        Result += iter -> second * (iter -> second - 1) >> 1;
    return Result;
}

inline void DFS(register int Step, register int Now)
{
    if (Now > m) return;
    
    if (Step == 8)
    {
        ans = Check_Max(ans, Doit()); 
        return;
    }
    
    for (register int i = 0; i <= Step; i++ )
    {
        t[Step] = i; DFS(Step + 1, (i != Step) + Now);
    }
    
}

int main(void)
{
    read(n); read(len); read(m);
    
    if (m > 6)
    {
        writeln(n * (n - 1) >> 1);
        return 0;
    }
    
    Temp.resize(len);
    
    for (register int i = 1; i <= n; i++ )
        cin >> str[i];
    
    DFS(0, 0);
       
    writeln(ans);  
    return 0;
}