#include<bits/stdc++.h>
using namespace std;

int ans=0;
int n;
int blk[3][2][2][2];
int cnt=0;


int check(vector<vector<vector<int>>> s,int b,int h,int x,int y){
    if(h<=-1){
        return 0;
    }
    bool f=true;
    for(int i=0;i<2;i++){
        for(int j=0;j<2;j++){
            for(int k=0;k<2;k++) {
                if (s[h + i][y + j][x + k]==1 && blk[b][i][j][k]==1){
                    f=false;
                }
            }
        }
    }
    if(f){
        return check(s,b,h-1,x,y);
    }
    else return h+1;
}

vector<vector<vector<int>>> delblk(vector<vector<vector<int>>> t){
    for(int i=1;i<t.size();i++){
        bool f=true;
        for(int j=0;j<t[i].size();j++){
            for(int k=0;k<t[i][j].size();k++){
                if(t[i][j][k]!=1)f=false;
            }
        }
        if(f){
            cnt++;
            for(int j=i;j<15;j++){
                for(int k=1;k<3;k++){
                    for(int l=1;l<3;l++){
                        t[j][k][l]=t[j+1][k][l];
                    }
                }
            }
            i--;
        }
    }
    return t;
}

void dfs(int b,vector<vector<vector<int>>> s,int ma){
    if(b>=n){
        ans=max(ans,ma);
        return ;
    }
    for(int i=0;i<3;i++){
        for(int j=0;j<3;j++){
            vector<vector<vector<int>>> t(s);
            int dpth=check(s,b,15,j,i);
            if(dpth==16)continue;
            //cout << b << " " <<  i << " " << j  << " " << dpth << endl;
            for(int k=0;k<2;k++) {
                for (int l = 0; l < 2; l++) {
                    for (int m = 0; m < 2; m++) {
                        if (blk[b][k][l][m] == 1) {
                            t[dpth + k][i + l][j + m] = 1;
                        }
                    }
                }
            }
            cnt=0;
            t=delblk(t);
            dfs(b+1,t,ma+cnt);
            // if(b==0){
            //     for(int i=3;i>=0;i--){
            //         for(int j=3;j>=0;j--){
            //             for(int k=0;k<4;k++){
            //                 cout << t[i][j][k] << " ";
            //             }cout << endl;
            //         }cout << endl;
            //     }
            // }
        }
    }
    
}

int main(){
    while(1){
        int h;
        cin >> h >> n;
        if(n==0)break;
        vector<vector<vector<int>>> s(17,vector<vector<int>>(4,vector<int>(4,0)));
        for(int i=0;i<4;i++){
            for(int j=0;j<4;j++){
                s[0][i][j]=1;
            }
        }
        ans=0;
        for(int i=1;i<=h;i++){
            string tt;
            cin >> tt;
            for(int j=0;j<2;j++){
                if(tt[j]=='#'){
                    s[i][1][j+1]=1;
                }
            }
            cin >> tt;
            for(int j=0;j<2;j++){
                if(tt[j]=='#'){
                    s[i][2][j+1]=1;
                }
            }
        }
        for(int i=1;i<=16;i++){
            for(int j=0;j<4;j++){
                if(j==0||j==3){
                    for(int k=0;k<4;k++){
                        s[i][j][k]=1;       
                    }
                }else{
                    s[i][j][0]=1;
                    s[i][j][3]=1;
                }
            }
        }
        for(int i=0;i<n;i++){
            string tt[4];
            for(int j=0;j<4;j++){
                cin >> tt[j];
            }
            for(int j=0;j<4;j++){
                if(tt[j][0]=='#'){
                    blk[i][j/2][j%2][0]=1;
                }else{
                    blk[i][j/2][j%2][0]=0;
                }
            }
            for(int j=0;j<4;j++){
                if(tt[j][1]=='#'){
                    blk[i][j/2][j%2][1]=1;
                }else{
                    blk[i][j/2][j%2][1]=0;
                }
            }
        }
        // for(int i=0;i<10;i++){
        //     for(int j=0;j<4;j++){
        //         for(int k=0;k<4;k++){
        //             cout << s[i][j][k] << " ";
        //         }cout << endl;
        //     }cout << endl;
        // }
        // for(int i=1;i>=0;i--){
        //     for(int j=1;j>=0;j--){
        //         for(int k=0;k<2;k++){
        //             cout << blk[0][i][j][k] << " ";
        //         }cout << endl;
        //     }cout << endl;
        // }
        dfs(0,s,0);
        cout << ans << endl;
    }
}



Measured memory_bytes: 3252