N,M = list(map(int,input().split())) tiles = [] for i in range(N): S = [list(input()) for _ in range(M)] tiles.append(S[:]) ans = 10**18 now = [[0 for _ in range(M)] for _ in range(M)] def f(n): if(n == N): global ans ans = min(ans, sum(sum(now[i][j] > 0 for j in range(M)) for i in range(M))) return SS = tiles[n][:] for _ in range(4): SS = list(zip(*SS[::-1])) for i in range(M): for j in range(M): if(SS[i][j] == "."):continue now[i][j] += 1 f(n+1) for i in range(M): for j in range(M): if(SS[i][j] == "."):continue now[i][j] -= 1 f(0) print(ans)