import java.util.Scanner; public class Main { public static void main(String[] args) throws Exception { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int m = sc.nextInt(); char[][][] s = new char[n][m][m]; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { s[i][j] = sc.next().toCharArray(); } } sc.close(); int ans = m * m; int n2 = n * 2; int n22 = 1 << n2; for (int i = 0; i < n22; i++) { char[][] t = new char[m][m]; for (int j = 0; j < n; j++) { int v1 = i >> j & 1; int v2 = i >> (n + j) & 1; int v = v1 * 2 + v2; char[][] a = s[j]; for (int k = 0; k < v; k++) { a = turnRight(a); } for (int k = 0; k < m; k++) { for (int k2 = 0; k2 < m; k2++) { if (a[k][k2] == '#') { t[k][k2] = '#'; } } } } int cnt = 0; for (int k = 0; k < m; k++) { for (int k2 = 0; k2 < m; k2++) { if (t[k][k2] == '#') { cnt++; } } } ans = Math.min(ans, cnt); } System.out.println(ans); } static char[][] turnRight(char[][] a) { int h = a.length; int w = a[0].length; int h1 = h - 1; char[][] b = new char[w][h]; for (int i = 0; i < w; i++) { for (int j = 0; j < h; j++) { b[i][j] = a[h1 - j][i]; } } return b; } }