#include<iostream>#include<cstdio>#include<string>#include<cstring>#include<algorithm>usingnamespace std;constint N =10010, M =80;int n, m;char str[N][M];int ne[N];bool st[M];intmain(){
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);memset(st,true,sizeof st);
cin >> n >> m;//横向暴力枚举for(int i =1; i <= n; i++){
cin >> str[i];for(int j =1; j <= m; j++){if(st[j]){for(int k = j; k < m; k += j){for(int u =0; u < m && u + k < m; u++){if(str[i][u]!= str[i][u + k]){
st[j]=false;break;}}if(!st[j])break;}}}}int width;for(int i =1; i <= m; i++){if(st[i]){
width = i;break;}}//将每行的循环节转化为字符串for(int i =1; i <= n; i++) str[i][width]='\0';//纵向KMP(将每行看成一个字母)for(int i =2, j =0; i <= n; i++){while(j &&strcmp(str[i], str[j +1])) j = ne[j];if(!strcmp(str[i], str[j +1])) j++;
ne[i]= j;}int heigth = n - ne[n];
cout << heigth * width << endl;return0;}