#include <iostream>
#include <vector>
#include <set>
#include <algorithm>
#include <fstream>
#include <string>
#include <math.h>
#include <cstdlib>
#include <cstdint>
#include <istream>
#include <sstream>
#include <cctype>
#include <functional>
#include <iomanip>
#define rep(i,N) for(ll i=0;i<N;i++)
#define disp(a) cout << a << endl;
#define PI 3.1415926535897932384626433
//cout << fixed << setprecision(20) << ** << endl;
typedef long long ll;
using namespace std;

double deg2rad(double degree)
{
    return degree * PI / 180.0000000000;
}
int main()
{
	string s,ANS="Yes";
	cin>>s;
	if(s.size()%2!=0){
		cout<<"No"<<endl;
	}
	else{
		for(int i=0;i<s.size();i=i+2){
			if(s[i]=='h'&&s[i+1]=='i'){
				continue;
			}
			else{
				ANS="No";
			}
		}
		cout<<ANS<<endl;
	}

}
#include<bits/stdc++.h>
using namespace std;
#define REP(i,a,b) for(int i=(a),_ed=(b);i<=_ed;++i)
#define DREP(i,a,b) for(int i=(a),_ed=(b);i>=_ed;--i)
typedef long long ll;
inline int read(){
    register int x=0,f=1;register char ch=getchar();
    while(!isdigit(ch)){if(ch=='-')f=0;ch=getchar();}
    while(isdigit(ch)){x=x*10+(ch^'0');ch=getchar();}
    return f?x:-x;
}

const char s[4][7][8]={{"aaba","ccba","abcc","abaa"},
		       {"aa.ab",".bbab","a.cca","a.a.a","bbabb"},
		       {"aaca..","bbca..","ac..aa","ac..bb","..aaca","..bbca"},
		       {"aaca...","bbca...","ac.bb..","ac...aa","..a.abb","..a.a.a","..ccbba"}};

int main(){
    //freopen("in.in","r",stdin);
    int n=read(),k=n%4+4;
    if(n<3)return puts("-1"),0;
    if(n==3)return puts("aab\nb.b\nbaa"),0;
    for(int _=1,j=0;_<=n-k;_+=4,++j){
	int m=j*4;
	REP(t,0,3){
	    REP(i,1,m)putchar('.');
	    REP(i,0,3)putchar(s[0][t][i]);
	    REP(i,m+5,n)putchar('.');
	    puts("");
	}
    }
    int m=k%4;
    REP(t,0,k-1){
	REP(i,1,n-k)putchar('.');
	REP(i,0,k-1)putchar(s[m][t][i]);
	puts("");
    }
    return 0;
}
